diff --git a/src/supervised/scaledloss.jl b/src/supervised/scaledloss.jl index 8e07330..11a6ecc 100644 --- a/src/supervised/scaledloss.jl +++ b/src/supervised/scaledloss.jl @@ -14,7 +14,7 @@ following signature: `scaledloss(loss, Val{K})` """ function scaledloss end -_serror() = throw(ArgumentError("Scale factor K has to be strictly positive.")) +@inline _serror() = throw(ArgumentError("Scale factor K has to be strictly positive.")) for KIND in (:MarginLoss, :DistanceLoss, :SupervisedLoss) SCALEDKIND = Symbol(:Scaled, KIND) @@ -44,6 +44,7 @@ for KIND in (:MarginLoss, :DistanceLoss, :SupervisedLoss) immutable ($SCALEDKIND){L<:$KIND,K} <: $KIND loss::L + ($SCALEDKIND)() = typeof(K) <: Number && K > 0 ? new(L()) : _serror() ($SCALEDKIND)(args...) = typeof(K) <: Number && K > 0 ? new(L(args...)) : _serror() ($SCALEDKIND)(loss::L) = typeof(K) <: Number && K > 0 ? new(loss) : _serror() end