2011-04-18 36 views
6

Mathematica, bağımsız değişken olarak Dynamic'u işleyebilen birçok işlev sunar. Bir bağımsız değişken olarak dinamik bir ifade alır bir işlev deseni tanımlama hakkında nasıl gidiyor acabaBir işlev argümanı olarak dinamik

FileNameSetter[Dynamic[name]] 
uses the dynamically updated current value of name, with the 
value of name being reset if a different file is chosen. 

: Örneğin, işlev FileNameSetter aşağıdaki varyantı vardır.

SinLocatorPane[Dynamic[sinvalue_]] := 
LocatorPane[Dynamic[x, (x = #; sinvalue = Sin[First[#]]) &], 
      Plot[Sin[x], {x, 0, 10}]] 

dinamik ifade argüman için kullanılacak doğru desen nedir: Örneğin, burada fonksiyonun LocatorPane dinamik varyantı sarmak için bir girişimdir? Fonksiyon tanımında dinamik argüman kullanıldığında herhangi bir uyarı var mı?

+3

Öğretici/AdvancedManipulateFunctionality' Özel Kontrol Görünümleri 'bölümünün alakalı olacağını düşünüyorum. Ayrıca, bu öğreticinin en üstünde belirtilen üç önkoşulları da okumayı unutmayın. –

+0

Eğiticiye bağlantı sağladığınız için teşekkür ederiz. – sakra

cevap

4

Belirli bir değişkenin değerini güncelleyen bir işlev yazmak isterseniz, bu bir değişkeni başvuruya göre aktarmak gibidir. Mathematica'da bunu elde etmenin standart yolu, fonksiyonunuza Hold* özniteliklerini kullanmaktır.

SetAttributes[SinLocatorPane, HoldFirst]; 
SinLocatorPane[sinvalue_] := 
LocatorPane[Dynamic[x, (x = #; sinvalue = Sin[First[#]]) &], 
    Plot[Sin[x], {x, 0, 10}]] 

Sonra
{Dynamic[sv], SinLocatorPane[sv]} 

sizin beklendiği gibi çalışacak. Kodunuz, Dynamic'in HoldFirst atfedilmiş olduğundan ve bu, kodunuzun sinvalue değişkenini güncellemesine izin verdiği için çalıştı. Aksi halde, Dinamik 'e ihtiyaç duyulmadı

İlgili konular