2016-04-01 20 views
-2

Kota'da this article numaralı telefondan tökezledim ve bu kodun kırpıldığını gördüm. Ancak, bu konuda fazla bilgi bulamadım.

def Ke(x) 
    "called Ke with param #{x}" 
end 

$ Ke 'sha' 
=> "Called Ke with param sha" 

$ Ke$ha 
=> "Called Ke with param " 

$ Ke$overwhaterver 
=> "Called Ke with param " 

Neden Ke$ha işlev Ke(x) denilen çağrıda, ama aynı zamanda x parametreyi görmezden?

+1

Böyle bir şey daha önce sorulmuştu, ancak Yığın Taşması, '$' ...> _ < – Carpetsmoker

+0

@ Carpetsmoker evet'i aramak için imkansız gibi görünüyor, öyle görünüyor. Belki de bu düşüşün nedeni nedir? – Azuan

cevap

4

$ ile global değişkenlere erişebilirsiniz. Ruby otomatik olarak parantezi ekler. Ke($ha) veya Ke $ha ile aynıdır.

Genel değişkenler her zaman hata olmadan başvurulabilir; onlar nil varsayılan:

$zxC# => nil 
$zxc = 'asd' 
$zxC# => "asd" 

$ha "göz ardı", bu nil, ve nil.to_s boş bir dize değil parametresi.

+0

ve neden "Ke" ile "$ ha" arasında yer açmamız gerekmiyor? – Azuan

+0

@Azuan Ruby'nin ayrıştırıcısı oldukça esnektir. '' '' '' '' '' 'Sadece global değişkenin başında görünebildiğinden, yeni bir jeton başlangıcı“ bilir ”. Başlatılmamış bir örnekle aynı olurdu var: 'Ke @ x # => nil' –

İlgili konular