SORU
14 NİSAN 2009, Salı


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
10 EYLÜL 2009, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Glyn Dewis

    Glyn Dewis

    25 AĞUSTOS 2007
  • joshsnice

    joshsnice

    28 Kasım 2006
  • Pituvision

    Pituvision

    11 Mart 2006