如何用 ruby 中的符号表示一个值?
How to represent a value with symbol in ruby?
我在这里尝试用ruby制作一个简单的服务器。
我正在考虑使用符号来使代码有点efficient.But我遇到了一个我不明白的问题。我尝试了在线资源和其他我可以得到的东西,但似乎对我的问题没有帮助。
正如您在第 8 行中看到的,我用同名符号表示变量路径。但是当我在第 12 行显示它时,它显示的是单词路径而不是它所代表的符号的值。
我还有一个疑问。据我所知,我们可以用两种方式表示符号,一种是冒号在名称前面(如:symbol),另一种是在名称末尾(如符号:)。但是当我尝试使用第二种表示形式(如符号 :) 放置输出时,它会导致错误 server_beta.rb:14: syntax error, unexpected keyword_end
server_beta.rb:24: 语法错误,意外的输入结束,期待 keyword_end.
如果有人能解释这一点,那将是一个很大的帮助。预先感谢您的帮助
5 def parse(request)
6 method, path, version = request.lines[0].split
7 {
8 path: path,
9 method: method
10 }
11
12 puts :path #Variation 1
13 puts path: #Variation 2
14 end
输出: 路径(变体 1)
我认为您对 Ruby 和 Rails 中某些约定的符号使用感到困惑。
符号不是变量。变量用于存储值。符号是字符串的轻量级版本。它们可以在哈希键等位置代替字符串。
hash1 = {'name' => 'Mary', 'age' => 30}
puts hash1['name']
#=> 'Mary'
hash2 = {:name => 'John', :age => 32}
puts hash2[:age]
#=> '32'
Ruby 引入了一种新的哈希符号,以便在使用消除“哈希火箭”的哈希符号的符号时使事情变得更清晰 =>
hash2 = {name: 'John', age: 32}
为了利用 Rails 中的约定,他们想出了“无差异访问的哈希”。所以它是一个散列,允许您在散列中互换使用字符串或其符号版本:
hash2 = = ActiveSupport::HashWithIndifferentAccess.new
hash2['name'] = 'John'
puts hash2[:name]
#=> 'John'
puts hash2['name']
#=> 'John'
在 Rails 中,您使用以下符号将值分配给 table 中的列:
p = Person.new(name: 'John', age: '32')
然后您可以通过作为列名称的字符串版本的方法名称访问它们:
放p.name
#=> 'John'
我认为您缺少 Ruby 的一些真正基础。我会研究更多,然后可能会做一个涉及重建 Rails 的教程,这样你就会看到 Ruby 的语法与 Rails.
中的约定有何关系
我在这里尝试用ruby制作一个简单的服务器。
我正在考虑使用符号来使代码有点efficient.But我遇到了一个我不明白的问题。我尝试了在线资源和其他我可以得到的东西,但似乎对我的问题没有帮助。
正如您在第 8 行中看到的,我用同名符号表示变量路径。但是当我在第 12 行显示它时,它显示的是单词路径而不是它所代表的符号的值。
我还有一个疑问。据我所知,我们可以用两种方式表示符号,一种是冒号在名称前面(如:symbol),另一种是在名称末尾(如符号:)。但是当我尝试使用第二种表示形式(如符号 :) 放置输出时,它会导致错误 server_beta.rb:14: syntax error, unexpected keyword_end server_beta.rb:24: 语法错误,意外的输入结束,期待 keyword_end.
如果有人能解释这一点,那将是一个很大的帮助。预先感谢您的帮助
5 def parse(request)
6 method, path, version = request.lines[0].split
7 {
8 path: path,
9 method: method
10 }
11
12 puts :path #Variation 1
13 puts path: #Variation 2
14 end
输出: 路径(变体 1)
我认为您对 Ruby 和 Rails 中某些约定的符号使用感到困惑。
符号不是变量。变量用于存储值。符号是字符串的轻量级版本。它们可以在哈希键等位置代替字符串。
hash1 = {'name' => 'Mary', 'age' => 30}
puts hash1['name']
#=> 'Mary'
hash2 = {:name => 'John', :age => 32}
puts hash2[:age]
#=> '32'
Ruby 引入了一种新的哈希符号,以便在使用消除“哈希火箭”的哈希符号的符号时使事情变得更清晰 =>
hash2 = {name: 'John', age: 32}
为了利用 Rails 中的约定,他们想出了“无差异访问的哈希”。所以它是一个散列,允许您在散列中互换使用字符串或其符号版本:
hash2 = = ActiveSupport::HashWithIndifferentAccess.new
hash2['name'] = 'John'
puts hash2[:name]
#=> 'John'
puts hash2['name']
#=> 'John'
在 Rails 中,您使用以下符号将值分配给 table 中的列:
p = Person.new(name: 'John', age: '32')
然后您可以通过作为列名称的字符串版本的方法名称访问它们:
放p.name #=> 'John'
我认为您缺少 Ruby 的一些真正基础。我会研究更多,然后可能会做一个涉及重建 Rails 的教程,这样你就会看到 Ruby 的语法与 Rails.
中的约定有何关系