关于Ruby最重要的事情是什么?

Bri*_*nan 13 ruby rubygems ruby-on-rails

我是这门语言的新手,我需要知道为了使用Ruby编程语言创建功能齐全的网站或Web应用程序,必须知道的最重要的事情是什么?

主要是带有Rake的Ruby on Rails和其他主要使用Rake的工具.

更新:我知道很多其他语言,如C++,Java,PHP,Perl等等....

更新2:这很棒......让他们来吧!

Chr*_*heD 12

Everything(除了falsenil)true在布尔上下文中求值.

这与其他空构造或0经常评估为的语言不同false.

if 0
    puts "0 evaluates to true"
end
Run Code Online (Sandbox Code Playgroud)


Ale*_*yne 11

一切都是对象.一切.

  • @Brian T Hannan:一个对象是你可以调用的方法和(可选)和内部状态.在`ObjectiveC`中,这不是一个对象`int i = 3`.你不能做`[i toString]`因为`i`不是一个没有你可以调用的方法的对象.在Ruby`i = 3; i.to_s#=>"3"`.即使是一个简单的整数也是一个对象,你可以像任何其他对象一样调用方法.并且你可以用非面向对象的样式编写ruby,而不创建自己的类等,但它并没有改变你在该代码中使用的所有内容实际上是一个对象的事实. (4认同)

Jim*_*dra 8

方法隐式返回最后一个语句的结果.

def foo
  "bar"
end

puts foo # outputs "bar"
Run Code Online (Sandbox Code Playgroud)

  • 像块一样.记住不要在(以前的)最后一行之后进行任何printf调试,否则你将返回一个不同的值! (2认同)

nas*_*nas 7

  1. 您可以将ruby模块用作mixins,其中您的设计需要多重继承
  2. 每个方法都返回其最后一个语句的值作为方法的值,尽管您可以使用return您想要更明确的位置.
  3. 您可以再次打开任何类并添加方法,称为猴子修补,如果合理使用可能会非常强大,否则会破坏.
  4. 您可以将代码块传递给任何方法并对其进行操作,例如在ruby世界中,大多数时候编码器使用迭代器而不是for循环.
  5. 在可能的情况下使用symbols而不是字符串因为它们是有效的,例如在散列键中

等等..


x1a*_*1a4 7

字符串是可变的; 符号不是.


Zac*_*ley 5

Ruby使用消息传递,而不是函数调用.

例如,

# These are all the same:
5 + 3
5.+(3)
5.send(:+, 3)
Run Code Online (Sandbox Code Playgroud)

  • 为了挑剔更多,对于已经覆盖`send`的情况,有`__send__`.它发生了.我认为,覆盖`__send__`的唯一原因是恶意. (2认同)