क्या मैं सेटर्स में एकाधिक पैरामीटर का उपयोग कर सकता हूं?स्कैला सेटर्स - एकाधिक पैरामीटर
उदाहरण के लिए:
private var _a = 0
def a = _a
def a_= (b: Int, c: Int) = _a = b + c
यदि हाँ, मैं कैसे सेटर विधि कॉल कर सकते हैं?
क्या मैं सेटर्स में एकाधिक पैरामीटर का उपयोग कर सकता हूं?स्कैला सेटर्स - एकाधिक पैरामीटर
उदाहरण के लिए:
private var _a = 0
def a = _a
def a_= (b: Int, c: Int) = _a = b + c
यदि हाँ, मैं कैसे सेटर विधि कॉल कर सकते हैं?
एक ट्यूपल के बारे में क्या?
class A {
private var _a = 0
def a = _a
def a_= (t: (Int, Int)) {
_a = t._1 + t._2
}
}
आप अजीब टपल पहुँच वाक्य रचना पसंद नहीं है:
class A {
private var _a = 0
def a = _a
def a_= (t: (Int, Int)) {
t match {
case(b, c) => _a = b + c
}
}
}
उपयोग:
val x = new A()
x.a = (3, 7)
x.a //10
इसका उदाहरण कैसे कहा जाता है? (मैं इसे अच्छी तरह से काम करने में सक्षम नहीं रहा हूं ... कम से कम [अब पुराना] 2.8।) –
@pst: एक उदाहरण जोड़ा गया है, काम करता है (?) –
प्रगति के लिए Hurray :) –
आप दो अन्य मूल्यों से एकल मान सेट करने के लिए की जरूरत है यह शायद नहीं एक है 'सेटर'। इस ऑपरेशन को एक सार्थक नाम देने या इसे इस वर्ग से बाहर ले जाने पर विचार करें।
private var _s: Whatever = // init
def s_=(newValue: Whatever): Unit = _setter = newValue
...
implicit def t2whatever(t: (SomeTypeA, SomeTypeB)): Whatever = // some logic here
अब हम अपने सेटर
obj.setter = sta -> stb
// or
obj.setter = (sta, stb)
कौन सा लगभग बराबर ही है सादे tuples के साथ के रूप में हालांकि, सेटर अर्थ घायल नहीं है फोन Cal।
class Z {
private var _s = // init
def s = _s
def s_=(newValue: S) = _s = newValue
}
object Z {
def toS(a: S, b: S): S = ChineseZodiac.choose(0.14 * a, math.PI + b)
}
और फिर
obj.s = Z.toS(1, 2)
धन्यवाद। मैं समझता हूं कि सेटर अर्थात् बदला जा सकता है, लेकिन कभी-कभी मैं उस सेटटर को कोड के छोटे से उपयोग में उपयोग करता हूं, और यह आसान लगता है अगर मैं उस कोड को किसी अन्य ऑब्जेक्ट या क्लास में विभाजित नहीं करता ... –
tuples अच्छा कर रहे हैं:
मामले अपने आंतरिक संचालन में की तरह लग रहे हो सकता है। विधि 'अद्यतन() 'का उपयोग करने पर भी विचार करें, उदा। 'डीफ़ अपडेट (पी 1: टी 1, पी 2: टी 2, पी 3: टी 3, वी: वी) 'तो आप' ओबीजे (पी 1, पी 2, पी 3) = वी' – tuxSlayer
लिख सकते हैं और हां, आप अभी भी इसे 'obj.a_' कह सकते हैं = (1, 2) 'लेकिन शायद यह 'सेटर' नहीं है;) – tuxSlayer