您好我刚刚开始学习Perl.我有这个简单的温度应用程序,但它没有编译,我不明白是什么错误以及如何解决它们?
你能指出我做错了什么以及如何解决它们:
#!/usr/local/bin/perl
use strict;
use warnings;
use constant false >= 0;
use constant true >= 1;
# Experimentation: Array & Hashes:
my @ar = ("a", "b", "c"); # error here
print $ar, "\n";
print $ar[0], "\n";
print $#ar, "\n";
print "The size of array = $#ar \n";
print "Trying to print $ar[1] within a string: ", $ar[1], " \n";
my %ha = ( "a" => 1, "b", "c", "d" ); # error here
print $ha, "\n";
print $ha{"a"}, "\n"; …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题,我不知道如何解决,它来自使用python并习惯于处理数据类型无关紧要的变量.我正在使用Windows任务计划程序及其拥有的数百万个对象,ITask ...这个ITask ......那.
所以我有一个函数,并且根据参数triggerType(枚举变量),变量触发器将是ITimeTrigger或IBootTrigger类型...呃这很难在文本中解释,如果你看下面的代码它会很容易看出我的问题是什么.
通过查看下面的示例,它更容易理解我的问题:
enum meh { I_WANT_A_INT = 50001, I_WANT_A_FLOAT };
bool foo( meh triggerType )
{
switch ( triggerType )
{
case I_WANT_A_INT:
{
int trigger = 10;
}
break;
case I_WANT_A_FLOAT:
{
float trigger = 10.111;
}
break;
default:
{
double trigger = 11;
}
break;
}
trigger = 5 * trigger ; // Compile error because trigger is not declared
cout << trigger << endl;
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用的解决方案是:
- 我可以重载函数并为ITimeTrigger(int)操作设置一个,为IBootTrigger(float)设置另一个.这是我真的不想做的事情,因为函数非常长,它们之间有很多重复的代码.
- ITimeTrigger和IBootTrigger都从相同的对象ITrigger继承,所以我可以将交换机外部的触发器var声明为ITrigger,然后转换为交换机中我需要的对象.这现在可以工作了,但是当我扩展这个函数来安排一个不同类型的任务触发器将不会继承ITrigger(win32语义再次),所以这个解决方案不会工作.
如何声明变量触发器(其数据类型将在运行时确定),以便稍后我可以在函数中使用var?