在Ruby 1.8及更早版本中,

Foo

是常量(类,模块或其他常量)。

foo

是一个变量。 关键区别如下:

module Foo
  bar = 7
  BAZ = 8
end

Foo::BAZ
# => 8

Foo::bar
# NoMethodError: undefined method 'bar' for Foo:Module

这一切都很好,但Ruby 1.9 允许使用UTF-8源代码 所以是 “大写”或“lowecase”至于这是什么呢? Ɖfoo集)或Ɖfoo怎么Ɖfoo

有一般规则吗?

后来:

Ruby-core已经在考虑一些数学运算符。 例如

module Kernel
  def √(num)
    ...
  end
  def ∑(*args)
    ...
  end
end

会允许的

x = √2
y = ∑(1, 45, ...)

我愿意去看

my_proc = λ { |...| ... }

x ∈ my_enumerable  # same as my_enumerable.include?(x)

my_infinite_range = (1..∞)

return 'foo' if x ≠ y

2.21 ≈ 2.2

===============>>#1 票数:3

好吧,我开玩笑的答案并没有那么顺利。

这个邮件列表问题,以及Matz的回答表明,Ruby 1.9内置的String#upcaseString#downcase方法只能处理ASCII字符。

如果不自行测试,我会将此视为强有力的证据,证明源代码中的所有非ascii字符都可能被视为小写。

有人可以下载并编译最新的1.9并看到吗?

===============>>#2 票数:2

如果你在源代码中使用扩展的UTF8字符作为标识符,我不知道ruby会做什么,但是我知道我会做什么,这会让你把头部向上拍打并告诉你不要那样做

===============>>#3 票数:1

我愿意去看

my_proc = λ { |...| ... }

x ∈ my_enumerable  # same as my_enumerable.include?(x)

my_infinite_range = (1..∞)

return 'foo' if x ≠ y

2.21 ≈ 2.2

我很乐意看到有人试图在英文键盘上输入该程序:P

===============>>#4 票数:1

Ruby 1.9.2-p0(YARV)中 ,结果与原始帖子中的结果相同(即Foo :: bar#=>#NoMethodError:Foo:Module的未定义方法'bar')。 此外,遗憾的是,带有重音的字母不被视为上限或下限,相关方法不会产生任何结果。

例子:

"á".upcase
=> "á"
"á" == "Á".downcase
=> false

===============>>#5 票数:0 已采纳

我无法让IRB接受UTF-8字符,因此我使用了测试脚本( /tmp/utf_test.rb )。

“λ”作为变量名称正常工作:

# encoding: UTF-8
λ = 'foo'
puts λ

# from the command line:
> ruby -KU /tmp/utf_test.rb
foo

“λ”也可以作为方法名称使用:

# encoding: UTF-8
Kernel.class_eval do
  alias_method :λ, :lambda
end

(λ { puts 'hi' }).call

# from the command line:
> ruby -KU /tmp/utf_test.rb:
hi

但它不能作为常量工作:

# encoding: UTF-8
Object.const_set :λ, 'bar'

# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name λ (NameError)

资本化版本也不是:

# encoding: UTF-8
Object.const_set :Λ, 'bar'

# from the command line:
> ruby -KU /tmp/utf_test.rb:
utf_test.rb:2:in `const_set': wrong constant name Λ (NameError)

我怀疑常量名称必须以大写ASCII字母开头(必须匹配/^[AZ]/ )。

  ask by James A. Rosen translate from so

未解决问题?本站智能推荐:

1回复

Ruby 1.9.x和字符串编码

我只是从Ruby 1.8.7迁移到Ruby 1.9.2,我一直在困扰字符串编码难题。 我的MySQL数据库都是utf8,但是每次我从它查询并查找字符串编码时,我都会得到ASCII-9BIT。 因此,像SigurRós这样的艺术家将打印为“ Sigur R \\ xC3 \\ xB3s”
11回复

ruby 1.9:UTF-8中的无效字节序列

我在Ruby(1.9)中编写了一个爬虫程序,它从很多随机站点中消耗了大量的HTML。 在尝试提取链接时,我决定只使用.scan(/href="(.*?)"/i)而不是nokogiri / hpricot(主要加速)。 问题是我现在收到很多“ invalid byte sequence in
2回复

Ruby 1.9-无效的多字节字符(utf-8)

我有一个只有这两行的红宝石文件: 当我用ruby test_enc.rb运行它时,它失败并显示: 我不知道如何正确指定字符符号( — ),但vim告诉我它是151, Hex 97, Octal 227 。 它也无法与其他字符(如ã以相同的方式失败,因此我怀疑它是否与该字符特别相
1回复

如何在Ruby中处理诸如“”之类的字符

我想将“HELLO”转换为“HELLO”,删除所有在插入数据库时​​导致问题的特殊字符。 它们似乎不是UTF8的一部分。 我想弄清楚Iconv ,但我有点卡在这里: 这样做: ......回来...... 我不想转换成UTF8以外的东西,因
1回复

Rails 2.3.5,Ruby 1.9,SQLite 3不兼容的字符编码:UTF-8和ASCII-8BIT

我知道差不多六个月前有人问过这个标题相同的问题。 我已经用Google搜索这个问题,但没有找到任何有效的解决方案。 这个非常关键的问题有没有解决的办法? 我需要让我的网站尽快运行。 为了使站点正常运行,我什至准备将utf8转换方法添加到我的所有变量中,否则可能会升级到Rail
2回复

ruby 1.9 + sinatra不兼容的字符编码:ASCII-8BIT和UTF-8

我正在尝试将sinatra应用程序迁移到ruby 1.9 我正在使用sinatra 1.0,机架1.2.0和erb模板 当我启动sinatra时,它可以工作,但是当我从浏览器请求网页时,出现此错误: 所有.rb文件都具有以下标头: 我认为问题出在erb文件中,即使它表
1回复

在Ruby中处理编码

我的弦子好坏 处理我的坏弦 使其可读 如果我做 我收到Encoding::UndefinedConversionError: U+05E2 from UTF-8 to ISO-8859-1 好的字符串和坏的字符串开头都是UTF-8,但是好的字符串是可读的,而坏的
7回复

如何避免在Ruby 1.9中将​​魔术编码注释放在每个UTF-8文件的顶部?

我有一个Rails项目,里面有很多西里尔字符串。 它在Ruby 1.8上运行良好,但Ruby 1.9假定源文件是US-ASCII编码的,除非你在源文件的顶部提供# encoding: utf-8注释。 此时,文件不被视为US-ASCII 。 是否有一种更简单的方法来告诉Ruby“这
1回复

在Ruby中,如何处理PDF内容中的非UTF 8字符?

我正在使用Rails 4.2.7。 我正在从网上下载和编写PDF内容,就像这样…… 我注意到对于某些内容,出现以下错误 我尝试通过替换无效字符来解决这一问题,例如…… 但是我得到了错误 尝试读取PDF文件时。 有谁知道更好的方法来处理不会损坏它们的已下载PDF
1回复

将红宝石1.8编码转换为红宝石1.9

如何将以下不推荐使用的ruby 1.8代码转换为ruby 1.9代码? 谢谢。