Vra

In Ruby 1.8 en vroeër,

Foo

'n konstante (a Klas, 'n Module, of 'n ander konstante). Terwyl

foo

'n veranderlike. Die belangrikste verskil is soos volg:

module Foo
  bar = 7
  BAZ = 8
end

Foo::BAZ
# => 8

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

Dit is alles goed en wel, maar Ruby 1.9 kan UTF-8 bronkode . So is "hoofletters" of "lowecase" sover dit betref? Wat van (streng subset) of Ɖfoo?

Is daar 'n algemene reël?

Later:

Ruby-kern is reeds oorweeg 'n paar van die wiskundige operateurs. Byvoorbeeld

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

sou toelaat

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

Ek sou graag wou sien

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

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

my_infinite_range = (1..∞)

return 'foo' if x ≠ y

2.21 ≈ 2.2
Was dit nuttig?

Oplossing 5

Ek kan nie kry IRR aan UTF-8 karakters aanvaar, so ek gebruik 'n toets script (/tmp/utf_test.rb).

"λ" werk goed as 'n veranderlike naam:

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

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

"λ" werk ook goed as 'n metode naam:

# 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

Dit werk nie as 'n konstante, al is:

# 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)

Ook nie die gekapitaliseer weergawe:

# 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)

My vermoede is dat konstante name moet begin met 'n kapitaal ASCII letter (moet /^[A-Z]/ pas).

Ander wenke

OK, my 'n grap antwoord nie af so goed gaan.

Dit poslys vraag, met antwoord uit Matz dui daarop dat Ruby 1.9 se gebou in String#upcase en String#downcase metodes net sal hanteer ASCII karakters.

Sonder om dit te toets myself, ek sou dit so sterk bewyse dat alle nie-ASCII karakters in bronkode waarskynlik sal oorweeg klein sien.

Kan iemand af te laai en stel die jongste 1,9 en sien?

Ek weet nie wat Ruby sou doen as jy gebruik uitgebreide UTF8 karakters soos ID's in jou bronkode, maar ek weet wat ek sal doen, wat sou wees om jou klap onderstebo die agterkant van die kop en jy vertel DON ' T HET WAT

  

Ek sou graag wou sien

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

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

my_infinite_range = (1..∞)

return 'foo' if x ≠ y

2.21 ≈ 2.2

Ek sou graag wou sien iemand probeer om die program te tik op 'n Engelse sleutelbord: P

Ruby 1.9.2-p0 (YARV) die resultaat is dieselfde as in die oorspronklike boodskap (dit wil sê, Foo :: bar # => # NoMethodError: undefined metode 'bar' vir Foo : Module). Ook briewe met aksent is ongelukkig nie as boonste of onderste beskou en verwante metodes produseer geen uitslag.

Voorbeelde:

"á".upcase
=> "á"
"á" == "Á".downcase
=> false
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top