不理解变量声明,符号,方法,实例变量,类变量之间的区别

时间:2012-10-24 11:05:58

标签: ruby-on-rails ruby ruby-on-rails-3

根据帖子推荐更新了这篇文章: rails中不一致的命名约定令我感到困惑。它看起来就像语法中的所有语言一样......

以下是一些示例:

为什么下面的迁移中有逗号?为什么关键字“默认”不是之前的冒号?这个默认关键字是什么?一个方法,一个变量,一个符号..那是什么东西?:

add_column :zombies, :rotting, :boolean, default: false

这是另一个例子:

为什么不衰老:年龄(带结肠)?为什么make_rotting在它之前被称为“”?

 class Zombie < ActiveRecord::Base
       before_save :make_rotting

   def make_rotting
      if age > 20
         self.rotting = true
      end
    end
 end

我是一个Java家伙,是的java很冗长,但至少它的一致性我想回去:(

2 个答案:

答案 0 :(得分:1)

Ruby和Rails在我同意的开始可能会非常混乱。

如果您提供代码示例,我认为您会得到更好的答案。因为您是初学者,可能会误解variable表示方法,或:value表示键/符号。

我可以帮助你一件事:

variable: :value实际上是

key: :value(其中:value是符号)

Ruby的新哈希语法曾经是:

:key => :value

答案 1 :(得分:0)

首先有不同类型的变量:

1.本地变量

foobar

2.Instance变量

@foobar

3.Class变量

@@foobar

4.全局变量

$foobar

您可以通过它们的使用方式区分它们。

现在,如果谈论模型的属性,可以声明为

property :foobar, :type => FIXNUM

现在validatevalidates都不同

validates :foobar ,:numerically => {:greater_than_or_equal_to => 0}

其中validates用于验证属性。

validate :method_name

其中validate用于验证某些方法