不确定这是否是因为 C# 编译器非常挑剔,但我尝试在 C# 中执行此操作:
public static void Main()
{
bool result = true; // some dummy value
if(result)
{
int x = 5;
Console.WriteLine(x);
}
int x = 10;
Console.WriteLine(x);
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨变量名“x”已被使用:
不能在此作用域中声明名为“x”的局部变量,因为它会给“x”赋予不同的含义,而“x”已在“子”作用域中用于表示其他内容。
我知道它认为这是一个范围问题,但为什么它会这么认为呢?
如果我用 Java 重现相同的代码,就没有问题。
我在Perl中引用了一个哈希列表,如下所示:
my $students = [
{ name => "Johnson", age => 19, gpa => 2.5, major => "CS" },
{ name => "Jones", age => 18, gpa => 2.0, major => "IT" },
{ name => "Brown", age => 19, gpa => 2.2, major => "SE" }
];
Run Code Online (Sandbox Code Playgroud)
我需要name
按键对该列表进行升序和降序排序.我知道Perl sort
函数,但这对我来说有点混乱,有哈希和多个键.
我正在尝试这个(关于我在SO上看过的其他问题):
foreach my $key (sort {$%students->{name}}) {
print $students{$key} . "\n";
}
Run Code Online (Sandbox Code Playgroud)
但它并不完全存在(获得语法错误).