Python'da boş bir işlevi, koşulu, döngüyü tanımlamak için pass
anahtar sözcük var ... Ruby için benzer bir şey var mı?Ruby'de "pass" eşdeğeri
Python Örnek:
def some_function():
# do nothing
pass
Python'da boş bir işlevi, koşulu, döngüyü tanımlamak için pass
anahtar sözcük var ... Ruby için benzer bir şey var mı?Ruby'de "pass" eşdeğeri
Python Örnek:
def some_function():
# do nothing
pass
Hep böyle pass
gerekli değildir, end
ifadeler var.
Yakut örnek:
def some_function()
# do nothing
end
Hayır, Ruby böyle bir şey yoktur. Boş bir blok, yöntem, modül, sınıf vb. Istiyorsanız, boş bir blok yazmanız yeterlidir:
def some_method
end
Bu kadar.
Python, her blok bir "sahte" hayır-op ifadeye ihtiyacım yüzden, en azbir ifade içermesi gerekmiyor. Ruby, 'un ifadelerine sahip olmadığını, yalnızca ifadeleri olduğunu ve bir ifadenin sıfır ifadeleri içermek için tamamen yasal olduğunu. Eğer bağımsız değişken herhangi bir sayı ile serbestçe kullanmak mümkün olmasını istiyorsanız
, argümanlardaki üzerinde küçük bir hile olması gerekir:
def gobble *args, ≺ end
Tek hat fonksiyonları ve sınıfları
def name ; end
class Name ; end
, pseudocode için düzgün çalışır. Ruby herşey bir ifadesi Böylece o boş bırakmak gayet önce
olarak cevap verdi. boş yöntemleri kullanmalarına izin verdiği için Ruby bunun için yararsız olduğunu geçiş anahtar kelime
def pass
end
# OR
def pass; end
Not seviyorum ama meraklı olduğunu iseniz piton programcılar için
def name
end
class Name
end
Bir yakut alternatif pass
, bu en basit ve en temiz alternatiftir.
ve şimdi bu işlevi blok içinde kullanabilirsiniz ve aynı şekilde çalışacaktır.
def name
pass
end
# OR
class Name
pass
end
Geçişin, dönen bir işlev olduğunu aklınızda bulundurun; bu nedenle, nasıl kullanabileceğinizi size kalmış.
begin
Process.kill('CONT')
rescue
end
Process.kill('CONT', pid) rescue nil
yerine yapıyor:
temelde yararlı olduğunudef some_function
nil
end
bir yolu bu konuda hiçbir şey yapmadan ama ne zaman kurtarma şey geçerli:
nil
Ve bu da sözdizimi hatasına neden olur:
> throw :x rescue
SyntaxError: (irb):19: syntax error, unexpected end-of-input
from /usr/bin/irb:11:in `<main>'
Notlar:
def some_function; end; some_function
olur hala dönüşnil
. Ayrıca nil
nil
da yine nil
numaralı telefondan dönecektir.
Diğerlerinin dediği gibi, Ruby'de bir yöntem gövdesini boş bırakabilirsiniz. Bununla birlikte, bu Python'un pass
ile başardığıdan biraz farklı olabilir.
Ruby'de her şey bir nesnedir. Bazı programlama dilleri null
veya nil
ile işaret değerin yokluğu, aslında Ruby NilClass
bir nesnedir.
(irb
cinsinden) aşağıdaki örneği inceleyin:
class A
def no_op
end
end
A.new.no_op
# => nil
A.new.no_op.class
# => NilClass
A.new.no_op.nil?
# => true
İşte Ruby'nin
NilClass documentation referans için. Python'un
pass
'un Python'da deneyimli olmasa da, dilin sözdizimsel sınırlamalarının üstesinden gelmek için kullanıldığına inanıyorum.
Bu çözümdür. İyi iş. Ben mi arıyordum? : Hiçbir şey yapma yolu: 'x == true? y = false: # false olsaydı hiçbir şey yapamazdım x == true? y = false: nil', mükemmel çalıştı! – DeeJayh
Sadece yapamayacağın bir sebep var mı? – pixatlazaki