我如何将其融入Perl6?
我试过了
use NativeCall;sub lgamma(num64 --> num64) is native(Str) {};say lgamma(3e0);my $x = 3.14;say lgamma($x);
这适用于第一个数字(一个Str),但对于第二个,$x失败,给出错误:
This type cannot unBox to a native number: P6opaque,Rat in block <unit> at pvalue.p6 line 8
我想这样做很简单,就像在Perl5中一样:使用POSIX’lgamma’;然后lgamma($x),但我不知道如何在Perl6中做到这一点.
解决方法 原生值的错误并不总是很清楚.基本上它是说老鼠不是一个数字.
3.14是一只老鼠. (合理的)
say 3.14.^name; # Ratsay 3.14.nude.join('/'); # 157/50
每次调用它时,你总是可以将值强制为Num.
lgamma( $x.Num )
这似乎并不那么好.
我只是将原生子包裹在另一个中,将所有实数转换为Num.
(Real是除Complex之外的所有数字)
sub lgamma ( Num(Real) \n --> Num ){ use NativeCall; sub lgamma (num64 --> num64) is native {} lgamma( n )}say lgamma(3); # 0.6931471805599453say lgamma(3.14); # 0.8261387047770286总结
以上是内存溢出为你收集整理的使用NativeCall将C库函数合并到Perl6中全部内容,希望文章能够帮你解决使用NativeCall将C库函数合并到Perl6中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)