ruby里面的=~标识啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruby里面的=~标识啥相关的知识,希望对你有一定的参考价值。

  1. 字符串和符号,都是Ruby中表示文本的方式
  不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s):
  >> "book".to_sym
  => :book
  >> :track.to_s
  => "track"
  2. 相同的符号是一个对象,相同的字符并不一定是一个对象
  这就是符号和字符串最大的差别,符号是不可变的,不能对一个符号进行修改。所以说,两个看起来相同的符号一定是一个对象,但是说两个看起来一样的字符串是一个对象,就不对了。
  这里,我们用 equal? 方法检验这一点,当两个对象相同时,equal返回true,反之是false:
  >> :book.equal?(:book)
  => true
  >> "book".equal?("book")
  => false
参考技术A 正则匹配符号,假如:s="asdfasdfasd",s=~/sdf/,匹配上返回起始位置1,没有匹配上返回nil本回答被提问者和网友采纳

这个语法在ruby中是啥意思[重复]

【中文标题】这个语法在ruby中是啥意思[重复]【英文标题】:what does this syntax mean in ruby [duplicate]这个语法在ruby中是什么意思[重复] 【发布时间】:2017-09-28 14:53:28 【问题描述】:

我最近学习了 ruby​​ 和 rails,并在 ruby​​ 中看到了 :foo 语法和 attr_accessor 之类的东西,在带有模型方法的 rails 中,但我不太明白。这种语法的名称是什么,它的作用是什么? 已见案例示例

class Dog
    attr_accessor :name
end

///second scenario
class CreatePurchases < ActiveRecord::Migration
def change
create_table :purchases do |t|
  t.string :name
  t.float :cost
  t.timestamps
  end
 end
end

//third scenario
class Purchase < ActiveRecord::Base
  validates :name, presence: true
  validates :cost, numericallity: greater than : 0
end

【问题讨论】:

我真的不知道 attr_accessor 做了什么,我在问:foo 语法 它们在Ruby中被称为符号,可以帮助您在线搜索文章。 【参考方案1】:

您在 Ruby 周围看到的 :foo 语法称为符号,它是 type,就像 String 是类型一样。 在 Ruby 中,String 是可变对象,这意味着它们在声明后可以更改,但符号不能。您所说的所有示例也可以与字符串一起使用,例如:

# with Strings
attr_accessor 'foo'
validates `name`

# with Symbols
attr_accessor :foo
validates :name

但是,在 Ruby 中,使用符号是标准做法,因为它们是如何分配到内存的,而且它们在性能方面更快。字符串每次都会在内存中分配一个新空间,即使它们具有相同的内容,因为它们是可变的。然而,由于符号是不可变的,当您声明一个符号时,它在整个程序执行过程中都保留在内存中(意味着垃圾收集器不会删除它)并且还存储在一个特殊的“字典”中,该字典针对性能进行了优化,这意味着符号保留独一无二,可以非常快速地检索到。

【讨论】:

以上是关于ruby里面的=~标识啥的主要内容,如果未能解决你的问题,请参考以下文章

C++:cout和cin 标识符的含义是啥?他们后面分别使用啥运算符?各运算符的作用是啥?

广告标识符和应用实例 id 有啥区别?

performSegue 动画结束,啥标识符?

verilog 语言中 大小比较用啥标识符?

结构成员标识符放在啥范围内?

我应该为这个可选添加啥标识符?