gpt4 book ai didi

ruby - ruby 符号(语法)可以包含什么?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:47 25 4
gpt4 key购买 nike

我想创建正则表达式来匹配 ruby​​ 符号,但我需要知道符号的确切语法是什么。

到目前为止,我知道以下内容:

:'string'
:"string"
:__underline
:method
:exclamation!
:question?
:@instance
:$global

最佳答案

你说的不是很清楚。

如果你在谈论什么 Symbol可以包含,答案是:任何东西,包括换行符、任意空格、控制字符、任意奇怪和晦涩的 Unicode 字符,以及其他所有内容。

如果你说的是各种写法Symbol文字,这是我最好的理解:

  • :文字:任何有效的 Ruby 标识符(例如 :foo:Foo:@foo:@@foo:$foo:$:、……)
  • 单引号 :文字:在单引号 String 中有效的所有内容文字,包括转义序列,例如 :'\'':'\\'
  • 双引号 :文字:双引号中有效的所有内容 String文字,包括转义序列,例如 :"\"" , :"\\" , 和 :"\n" ,以及字符串插值,它允许您将任意 Ruby 代码的结果注入(inject) Symbol ,例如:"#{if rand < 0.5 then RUBY_VERSION else ENV['HOME'] end}"
  • 单引号 ArraySymbol s 文字:在单引号 Array 中有效的所有内容的 String字面意思,例如%i|foo bar baz| (相当于 [:foo, :bar, :baz] ),%i(foo\ bar baz) (相当于 [:'foo bar', :baz] ),%i:foo bar: (相当于 [:foo, :bar] )
  • 双引号 ArraySymbol s 字面量:在双引号 Array 中有效的所有内容的 String字面意思,例如%I|foo #{bar} baz|
  • Symbol key: value 中的哈希键语法:每个有效的 Ruby 标签,例如{foo: 42}
  • Symbol引用中的散列键 'key': value语法:每个有效的 Ruby String文字,包括转义序列和插值,例如{"foo\n#{bar}": 42}

当然还有很多其他表达式的计算结果为 Symbol小号:

  • 方法定义表达式:def foo;end # => :foo
  • String#to_sym (别名 String#intern ):'foo bar'.to_sym # => :'foo bar'
  • 真的,任何可能return的方法一个Symbol

关于ruby - ruby 符号(语法)可以包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30526761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com