当前位置:K88软件开发文章中心编程语言非主流编程语言Julia → 文章内容

Julia 构造函数

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-15 16:28:13

oint{T<:Real}(::Float64, ::Int64)其实只需定义下列外部构造方法:julia> Point(x::Real, y::Real) = Point(promote(x,y)...);promote 函数将它的所有参数转换为相同类型。现在,所有的实数参数都可以正常运行:julia> Point(1.5,2)Point{Float64}(1.5,2.0)julia> Point(1,1//2)Point{Rational{Int64}}(1//1,1//2)julia> Point(1.0,1//2)Point{Float64}(1.0,0.5)案例:分数下面是 rational.jl 文件的开头部分,它实现了 Julia 的分数:immutable Rational{T<:Integer} <: Real num::T den::T function Rational(num::T, den::T) if num == 0 && den == 0 error("invalid rational: 0//0") end g = gcd(den, num) num = div(num, g) den = div(den, g) new(num, den) endendRational{T<:Integer}(n::T, d::T) = Rational{T}(n,d)Rational(n::Integer, d::Integer) = Rational(promote(n,d)...)Rational(n::Integer) = Rational(n,one(n))//(n::Integer, d::Integer) = Rational(n,d)//(x::Rational, y::Integer) = x.num // (x.den*y)//(x::Integer, y::Rational) = (x*y.den) // y.num//(x::Complex, y::Real) = complex(real(x)//y, imag(x)//y)//(x::Real, y::Complex) = x*y'//real(y*y')function //(x::Complex, y::Complex) xy = x*y' yy = real(y*y') complex(real(xy)//yy, imag(xy)//yy)end复数分数的例子:julia> (1 + 2im)//(1 - 2im)-3//5 + 4//5*imjulia> typeof(ans)Complex{Rational{Int64}} (constructor with 1 method)julia> ans <: Complex{Rational}false

上一页  [1] [2] 


Julia 构造函数