【问题标题】:Perl - Undefined subroutine for tanPerl - tan 的未定义子例程
【发布时间】:2019-03-19 00:31:11
【问题描述】:

有一个问题,因为不明白为什么它对 tan 不起作用,但对 cos 和 sin 起作用。我认为问题在于它是未定义的,因此是错误消息,但为什么 cos 和 sin 确实有效,而不是 tan?那么我将如何定义一个 tan 方法?对不起,新手的问题,我只是想解决 Perl。

错误:

Undefined subroutine &Slic3r::Print::SupportMaterial::tan called at C:/Users/owner/Documents/Slic3r/lib/Slic3r/Print/SupportMaterial.pm line 945.

谭码:

my $min_angle = 40;
my $min_radian = deg2rad($min_angle);
my $b = tan($min_radian);
@Z=map{$_/$b} @Z;

正弦码:

Polygon->new(map [ $circle_radius * cos $_, $circle_radius * sin $_ ]

编辑:意识到子例程需要一个函数,但是在查看我试图与模块集成的 Perl 脚本时,它工作正常并且没有方法,只是声明为 tan。

【问题讨论】:

  • 你在使用任何模块吗??这是您的完整代码(包括您可能使用的库)??只需使用这种代码接缝的和平,您就可以尝试在空数组中使用map。如果定义了@Z,您在何处、何时以及如何定义@Z

标签: perl


【解决方案1】:

sincosbuiltin Perl functions,但 tan 不是。这很容易通过一个简单的声明来解决

sub tan { sin($_[0]) / cos($_[0]) }

或者导入一个定义切线函数的模块

use Math::Trig;

【讨论】:

  • atan 也丢失了,但 atan2 存在。 Perl 有时很奇怪。
猜你喜欢
  • 2013-08-13
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 2019-06-23
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多