我想知道如何在bash中声明2D数组,然后初始化为0。
在C中看起来像这样:
int a[4][5] = {0};
以及如何为元素分配值?如在C中:
a[2][3] = 3;
您可以使用例如哈希来模拟它们,但需要注意前导零和许多其他事情。下一个演示有效,但远非最佳解决方案。
#!/bin/bash
declare -A matrix
num_rows=4
num_columns=5
for ((i=1;i<=num_rows;i++)) do
for ((j=1;j<=num_columns;j++)) do
matrix[$i,$j]=$RANDOM
done
done
f1="%$((${#num_rows}+1))s"
f2=" %9s"
printf "$f1" ''
for ((i=1;i<=num_rows;i++)) do
printf "$f2" $i
done
echo
for ((j=1;j<=num_columns;j++)) do
printf "$f1" $j
for ((i=1;i<=num_rows;i++)) do
printf "$f2" ${matrix[$i,$j]}
done
echo
done
上面的示例创建了一个具有随机数的4x5矩阵,并将其打印后转置,示例结果
1 2 3 4
1 18006 31193 16110 23297
2 26229 19869 1140 19837
3 8192 2181 25512 2318
4 3269 25516 18701 7977
5 31775 17358 4468 30345
原理是:创建一个关联数组,其中索引是类似的字符串3,4
。好处:
30,40,2
3维。${matrix[2,3]}
问题内容: 在Scala中,我可以这样声明一个字节数组 这太冗长了。有没有更简单的方法来声明Byte数组,类似于Java的 请注意,由于String 中的,以下结果导致错误 问题答案: 我相信您能做的最短的是 您 必须 将和转换为字节,因为它们不是有效的字节文字,因为它们超出了有符号字节的范围([-128,127])。 请注意,Java也是如此,以下给出了编译错误: 您必须将192和168强制转换
问题内容: 我想在Swift中存储一系列弱引用。数组本身不应该是一个弱引用-它的元素应该是。我认为可可对此提供了非类型安全的版本。 问题答案: 创建通用包装,如下所示: 将此类的实例添加到您的数组。 定义时,可以使用或。 另外,为了帮助获取数组内容,您可以按照以下方式进行操作: 上面的用法应替换为-但我不认为当前的Swift语言允许这样定义扩展。
问题内容: 如果我在Swift中需要自定义类型,可以,该怎么办?(类似于闭包语法typedef) 问题答案: 使用关键字代替
问题内容: 有以下代码: 显然,的调用以某种方式改变了类的属性和行为。 这是怎么发生的?如何在代码中使用这种方法? 示例代码是zope.interface模块的一部分。 问题答案: 详细的“会发生什么” 该函数检查框架堆栈并更改构造类的名称空间(python )。python语句中的所有内容都在该命名空间中执行,结果形成类主体。 该函数为类命名空间添加了额外的值,其中包含一些数据(已传递给该函数的
问题内容: 我想问一个关于Java的问题。我有一个用户定义的对象类,学生,它有2个数据成员,名称和ID。在另一个类中,我必须声明那个object [](例如)。但是,我不知道对象数组的大小。是否可以声明对象数组但不知道大小?谢谢。 问题答案: 用户。添加新元素时,它将自动扩展。以后,您可以根据需要将其转换为数组。 作为另一个选择(不确定您到底想要什么),您可以声明字段,而不必立即对其进行初始化。
问题内容: 如何在Java中声明和初始化数组? 问题答案: 你可以使用数组声明或数组文字(但只有当你立即声明并影响变量时,数组文字才能用于重新分配数组)。 对于原始类型: 例如,对于类,String是相同的: 当你首先声明数组然后对其进行初始化时,第三种初始化方法很有用。