2013-01-01 16 views
8

में नए प्रकार के लिए फ़ंक्शन की तरह परिभाषित करना जूलिया में एक नया प्रकार प्रिंट करने योग्य बनाने के लिए, किस तरीके को परिभाषित किया जाना चाहिए? मुझे विश्वास है कि एक ही show है, जो तब की तरह अन्य कार्यों के व्यवहार के लिए प्रेरित करेगा परिभाषित करना चाहिए:प्रिंटिंग() - जूलिया

  • प्रिंट
  • स्ट्रिंग
  • repl_show
  • showcompact
  • showall

कौन सा इन तरीकों में से एक नए प्रकार के लिए परिभाषित करने की आवश्यकता है?

उत्तर

10

केवल print() और show परिभाषित बेस स्रोत किसी भी विश्वसनीय संदर्भ है, तो base/version.jl है (और showprint पर निर्भर करता है)

function print(io::IO, v::VersionNumber) 
    print(io, v.major) 
    print(io, '.') 
    print(io, v.minor) 
    print(io, '.') 
    print(io, v.patch) 
    if !isempty(v.prerelease) 
     print(io, '-') 
     print_joined(io, v.prerelease,'.') 
    end 
    if !isempty(v.build) 
     print(io, '+') 
     print_joined(io, v.build,'.') 
    end 
end 
show(io, v::VersionNumber) = print(io, "v\"", v, "\"") 

यह इस बिंदु यह आप पर निर्भर है पर लगता है अगर तुम पर भरोसा करना चाहते हैं एक आम समारोह; आप इस तरह के सभी कार्यों को इस तरह कार्यान्वित करते हैं। उदाहरण:

type Foo 
end 
import Base.string 
function string(x::Foo) 
    return "a Foo()" 
end 
import Base.print 
print(io::IO, x::Foo) = print(io, string(x)) 
import Base.show 
show(io::IO, x::Foo) = print(io, "This is ", x) 

-

julia> f = Foo() 
This is a Foo() 
संबंधित मुद्दे