2009-02-25 11 views
0

Genellikle, komutlar verirken veya nesnelerimizi sorgularken, arayana geri dönmemiz gereken işlem hakkında ek bilgi vardır. Örneğin. yanlış eğer yapmak Tamam değildi nedenKomut/Sorguda, işle ilgili işle ilgili iletilere nasıl yanıt verilir

bool IsSomethingOkayToDo() Bu durumda

, biz arayan bilmek isteyebilir. C# '

genellikle yapmam:

dize nedeni; foo.IsSomethingOkayToDo (çıkış nedeni);

(Ya birden nedenlerden durumunda liste halinde geçebileceği.)

bu en iyi yolu var mı? Komut/sorgu ve yan etki serbest fonksiyonlarına uymak istediğimi varsayarsak, OO onaylı alternatifler var mı?

+0

http://stackoverflow.com/questions/514038/elegant-ways-to-return-multiple-values-from-a-function aynı içeriği içerdiğinden, zweiterlinde işaret ettiği için bunu kapatmaya oy verdim. – pondermatic

+0

Aynı şey değil. Komut/sorgu açısından bunu birden çok değer döndürmemekle ilgili olarak soruyorum. – pondermatic

cevap

0

Bir seçenek birden çok değer döndürmektir.

birden dönüş değerleri konu --- ve farklı bağlamlarda nasıl kullanılacağını --- üzerinde geldi

isOK, reason = foo.is_something_ok_to_do() 
SO birkaç kez:

Elegant ways to return multiple values from a function Is it pythonic for a function to return multiple values? Python, bu basit ve deyimsel kabul var

Komut-sorgu ayırması, bir eylemin sonuçlarını kaydeden nesneye durum ekleyerek önemsiz olarak zorlanabilir. Ancak, eşzamanlılık sorunları gibi olumsuz yan etkiler olabilir (bunun için Wikipedia sayfasına bakın). Örneğin:

foo.do_something() 
is_ok = foo.did_something_succeed() 
reason = foo.something_success_reason() 

Bunların her biri ya bir değer döndürmez bir komut ya da bir değer verir ve durumunu değiştirmek olmayan bir sorgu.