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

我最近学习了Ruby编程语言,总而言之,它是一门好语言。但是令我惊讶的是,它并不像我期望的那么简单。更准确地说,“最小惊喜规则”在我看来并不十分受人尊敬(当然,这是非常主观的)。例如:


x = true and false

puts x  # displays true!

和著名的:


puts "zero is true!" if 0  # zero is true!

您会警告Ruby新手的其他“陷阱”是什么?


繁星点点滴滴
浏览 553回答 3
3回答

绝地无双

以下代码使我感到惊讶。我认为这是一个危险的陷阱:既容易遇到,又难以调试。(1..5).each do |number|  comment = " is even" if number%2==0  puts number.to_s + comment.to_send打印:12 is even34 is even5但是如果我在块之前添加comment =任何内容 ...comment = nil(1..5).each do |number|  comment = " is even" if number%2==0  puts number.to_s + comment.to_send然后我得到:12 is even3 is even4 is even5 is even基本上,当仅在块内部定义变量时,然后在块末尾销毁该变量,然后nil在每次迭代时将其重置为。通常就是您所期望的。但是如果变量是该块之前所定义,然后将外变量用于块内,并且它的值是因此迭代之间持久的。一种解决方案是改为编写此代码:comment = number%2==0 ? " is even" : nil我认为很多人(包括我在内)倾向于写“ a = b if c”而不是“ a = (c ? b : nil)”,因为它更具可读性,但显然有副作用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby