IronPython içinde .NET değer türleri kullanıldığında well known issue var. Bu son zamanlarda Python'u C# gömülü bir betik dili olarak kullanmaya çalışırken başım ağrıyordu. aşağıdaki gibi sorun özetlenebilir:C# IronPython'u yerleştirirken değer türleri nasıl kullanılır?
gibi bir C# yapı göz önüne alındığında:
struct Vector {
public float x;
public float y;
}
Ve sınıf C# gibi:
class Object {
public Vector position;
}
IronPython olur şu:
obj = Object()
print obj.position.x # prints ‘0’
obj.position.x = 1
print obj.position.x # still prints ‘0’
Makale belirtildiği gibi, bu, değer türlerinin çoğunlukla değişmez olduğu anlamına gelir. Ancak, yukarıda görüldüğü gibi uygulanan bir vektör kütüphanesi kullanmayı planladığım için bu bir problem. Değer türlerine dayanan mevcut kütüphanelerle çalışmak için herhangi bir geçici çözüm var mı? Kütüphaneyi değiştirmek son çare olurdu, ama bundan kaçınmayı tercih ederim. Aradığınızda
Bu işe yarar mı? obj = Nesne() pos = Vektör() pos.x = 1 obj.position = pos –
Evet, işler obj.position.x baskı. Uygun bir kurucu ile de 'obj.position = Vector (1,0) 'kullanabilirsiniz. Bu benim sorularımda anlattığım davranışlar hala kafa karıştırıcı olsa da bu kabul edilebilir olabilir ... – kloffy