सदस्य आमंत्रण के बीच जाने मूल्यांकन आदेश की गारंटी है?

वोट
-2

चलो कहते हैं कि मैं राज्य के साथ एक struct, और कहा कि struct पर कुछ सदस्य कार्य हैं। चलो का कहना है कि struct सदस्य अपना अलग प्रकार का एक उदाहरण देता है, और मुझे लगता है कि उदाहरण पर अतिरिक्त कार्य कहते हैं, और एक तर्क के रूप प्रारंभिक उदाहरण पर कुछ अन्य सदस्य बुला का परिणाम गुजरती हैं। पहले मंगलाचरण, और तर्क मंगलाचरण के बीच मंगलाचरण के आदेश है, की गारंटी?

(यह पैटर्न जब बिल्डर प्रकार की वस्तुओं, कुछ आंतरिक स्थिति है कि एक अभिव्यक्ति ढेर की तरह बनाने की कोशिश एक बहुत ऊपर आता है।)

package main

import (
    fmt
)

type q struct {
    val int
}

func (s *q) getVal() int {
    return s.val
}

func (s *q) a() *q {
    s.val += 1
    return s
}

func (s *q) b(i int) int {
    return i + s.val
}

func main() {
    s := &q{}
    // this currently prints 2
    // but is that guaranteed?
    fmt.Println(s.a().b(s.getVal()))
}

विशेष रूप से, के रिश्तेदार मंगलाचरण आदेश है s.a()बनाम s.getVal()गारंटी? Golang शाब्दिक बाएँ से सही क्रम, को परिभाषित करता है, लेकिन केवल एक व्यक्ति के अभिव्यक्ति के लिए, और s.a().b()लगता है यह तकनीकी रूप से तुलना में एक अलग अभिव्यक्ति है जैसे s.getVal()

व्यवहार में यह वर्तमान में है व्यवहार है मैं चाहता हूँ और उम्मीद थी, लेकिन मैं नहीं बता सकता कि यह भी एक व्यवहार मैं पर भरोसा कर सकते है हमेशा के लिए।

13/02/2020 को 23:55
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
0

के संबंधित भाग कल्पना है:

सभी फ़ंक्शन कॉल, विधि कॉल, और संचार के संचालन शाब्दिक बाएँ से सही क्रम में मूल्यांकन किया जाता है।

तथा

पैकेज के स्तर पर, प्रारंभ निर्भरता व्यक्ति प्रारंभ भाव के लिए बाएँ-से-सही नियम को ओवरराइड, लेकिन हर अभिव्यक्ति के भीतर ऑपरेंड के लिए नहीं:

14/02/2020 को 00:15
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more