相关疑难解决方法(0)

什么是Ruby Gotchas新手应该被警告?

我最近学习了Ruby编程语言,总而言之,它是一门很好的语言.但我很惊讶地发现它并不像我预期的那么简单.更准确地说,"最不惊讶的规则"对我来说似乎并不受到尊重(当然这是非常主观的).例如:

x = true and false
puts x  # displays true!
Run Code Online (Sandbox Code Playgroud)

和着名的:

puts "zero is true!" if 0  # zero is true!
Run Code Online (Sandbox Code Playgroud)

你会警告一个Ruby新手的其他"问题"是什么?

ruby

106
推荐指数
16
解决办法
1万
查看次数

解析与操作的可变范围和顺序:"if"中的赋值

我的理解是,if行前面的语句在行前面的代码之前进行了评估:

'never shown' if (false)
Run Code Online (Sandbox Code Playgroud)

并且可以在if声明中进行分配.

'shown' if (value = 'dave is king')
value #=> "dave is king"
Run Code Online (Sandbox Code Playgroud)

并且,当分配不存在的变量时,将创建该变量.事先不需要它存在.这是真的?

如果所有这些假设都成立,为什么会失败呢?

error_array << error if (error = import_value(value))
#=> undefined local variable or method `error' for
Run Code Online (Sandbox Code Playgroud)

它在数组推右前分配给错误?我想了解什么时候进行评估.

这个确实有效:

if (error = import_value(value))
  error_array << error
end
Run Code Online (Sandbox Code Playgroud)

现在我真的很困惑.

ruby variable-assignment conditional-statements

4
推荐指数
1
解决办法
347
查看次数

如何在ruby中修改循环变量?

for i in (0..5)
  if(i==0)
    i=4
  end
  puts i
end
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,我将输出除外 - 4 5

但相反,它是 - 4 1 2 3 4 5

所以我得出结论,循环变量没有改变.怎么能改变它?有人能告诉我吗?

实际上,在我的程序中,我需要保存当前的循环状态并稍后进行检索,以便在下一个启动程序从其剩余的同一点恢复.

ruby ruby-on-rails

1
推荐指数
1
解决办法
2830
查看次数