繁体   English   中英

如何在Julia的复合类型中指定条件?

How to specify conditions within Julia's composite types?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试在Julia中创建表示椭圆曲线上点的复合类型。 如果满足y ^ 2 == x ^ 3 + a * x + b或x和y都等于零,则点有效。 注意,后一种情况表示无穷远处的点。

我想出了以下代码,但无法弄清楚如何计算无穷大点。

  • 有没有办法处理结构中的不同异常?
  • 异常可以简单地返回有效类型而不是错误吗? 例如,如果x ==什么都不是&& y ==什么都不是,那么Point(nothing,nothing,a,b)

IntOrNothing = Union{Int,Nothing} struct Point x::IntOrNothing y::IntOrNothing a::Int b::Int Point(x,y,a,b) = x == nothing || y == nothing || y^2 != x^3 + a*x + b ? error("Point is not on curve") : new(x,y,a,b) end

1 个回复

我将为Point定义两个内部构造函数,如下所示:

IntOrNothing = Union{Int,Nothing}
struct Point
    x::IntOrNothing
    y::IntOrNothing
    a::Int
    b::Int
    Point(x::Nothing,y::Nothing,a,b) = new(x,y,a,b)
    Point(x,y,a,b) = y^2 != x^3 + a*x + b ? error("Point is not on curve") : new(x,y,a,b)
end

因为我认为这最容易理解。

请注意,如果您调用Point(nothing,2,1,3) ,将会得到MethodError Point(nothing,2,1,3)但是我想从您的代码中您并不关心抛出的异常的类型,只要将异常抛出到无效数据上即可。

它能解决您的问题吗?

1 如何在Julia中指定函数的类型/签名?

我正在实现牛顿方法来在预编译的库中查找根 。 常见的情况是使用从Float64到Float64函数,我希望它的优化编译版本存在于库中。 当然,我也将实现类型的泛型版本,但是Julia需要通过签名区分方法的某种方式,以便它知道在运行时调用哪个方法。 当前,实现为: 尚未使用/调试。 ...

2 如何在Julia中指定非理性数字的类型?

这是一个惊喜: 如何在Julia 1.1.1中编写类型Irrational{:e} ? 该表达式在Julia 0.5中返回true,但这仅是因为e是顶级标识符。 从0.5到现在,语言有所改变。 我发现e已移至Base.MathConstants ,但是我还没有弄清楚如何编写其类 ...

5 julia 抛出:“new{…}”中指定的类型参数太少

我想创建一个类似于下面的struct C ,但其中Ca和Cb的类型相同: 我认为通过执行以下操作来实现这将是微不足道的: 但它抛出一个错误: 我在julia discourse上找到了解决方案的开始。 错误消失了。 但由于某种原因它不适用于所有Int 有人知道这里发生了什么吗? ...

6 如何在javascript中指定类型

这个问题已经在这里有了答案: JavaScript为数字添加字符串 7个答案 嗨! 我的问题是,当您提示输入数字并将其添加到另一个提示时,是使用“ +”运算符来加入行的。 我希望它将数字加在一起。 我怎样才能做到这一点? alert(promp ...

7 您如何在Haskell中指定任何类型?

我必须将一个列表分成两半,从而得到列表前半部分和列表后半部分的元组(half1,half2)。 当此列表的长度为奇数时,我想使half1包含比half2更多的元素。 如果给出一个空列表,我想要一个([[],[])的元组。 但是,以下代码给我一个错误。 我认为,对于putStrLn( ...

2013-11-28 04:07:38 3 148   haskell
9 如何在MySQL中指定复合唯一约束

我有一个带有以下各列的表daily_ward条目 现在,我想每天对服务= 1的服务限制一个条目。 我的date_time字段也包含时间,服务包含许多服务。 因此,我无法立即添加唯一索引。 我应该怎么做? ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM