Ne kadar zarif hesapların yapılabilmesi bazı fonksiyon dönüş değeri görmezden?
Eğer n bir işlevin dönüş değeri n-1 dönüş değeri önce tüm kukla değişkenleri oluşturmak zorunda kalmadan elde etmenin mümkün olup olmadığını merak ediyordum.
Hadi MATLAB aşağıdaki işlevi var ki:
function [a,b,c,d] = func()
a = 1;
b = 2;
c = 3;
d = 4;
Şimdi sadece üçüncü dönüş değeri ilgileniyorum varsayalım. Bu oluşturarak başarılı (en az) bir kukla değişken olabilir, ama bu tür çirkin bence
[dummy, dummy, variableThatIWillUse, dummy] = func;
clear dummy;
Aşağıdakilerden biri böyle bir şey yapmak mümkün olabileceğini düşünürdüm, ama değil
[_, _, variableThatIWillUse, _] = func;
[, , variableThatIWillUse, ] = func;
variableThatIWillUse = func(3);
variableThatIWillUse = func()(3);
Her şık yolu bunu yapmak için bu işi yapmak var mı?
Şimdiye kadar en iyi çözüm sadece bir kukla değişken olarak variableThatİWillUse kullanmak için. Bu çalışma (veya temizlemek gerekir) polutes gerçek bir kukla değişken oluşturmak zorunda kurtarır beni. Kısacası: çözüm her dönüş değeri için variableThatİWillUse ilginç bir güne kadar. Dönüş değeri göz ardı edilebilir:
[variableThatIWillUse, variableThatIWillUse, variableThatIWillUse] = func;
Ben hala bu çok çirkin bir kod olduğunu düşünüyorum, ama eğer daha iyi bir yolu varsa "hayır" cevabını kabul edeceğim sanırım.
CEVAP
Deposunda bulunan Sürüm 7.9 (R2009b)~, örneğin, bir kullanabilirsiniz
[~, ~, variableThatIWillUse] = myFunction();
,
bu isteğe bağlı bir şey değil. Sadece yazarak [~ ~ var]
çalışmaz ve bir hata atmak olacaktır.
Ayrıntılar için release notes bkz.
'In geri dönüş değeri ile çözüleb...
Powershell Fonksiyon Dönüş Değeri...
C saklı yordam dönüş değeri almak#...
Ne kadar zarif Yakut bir karma tüm ana...
Eğer string boş sonra bazı varsayılan ...