在角色 X::Comp 中§

请参阅主要文档 在上下文中 了解方法行

发生编译错误的行号。

在 CallFrame 中§

请参阅主要文档 在上下文中 了解方法行

method line()

这是查找 line 注释的快捷方式。例如,以下两个调用是相同的。

say callframe(1).line;
say callframe(1).annotations<line>;

在 Label 中§

请参阅主要文档 在上下文中 了解方法行

返回定义标签的行。

在 Backtrace::Frame 中§

请参阅主要文档 在上下文中 了解方法行

method line(Backtrace::Frame:D --> Int)

返回行号(行号从 1 开始计数)。

my $bt = Backtrace.new;
my $btf = $bt[0];
say $btf.line;

在 Code 中§

请参阅主要文档 在上下文中 了解方法行

method line(Code:D: --> Int:D)

返回代码对象声明开始时源代码中的行号。

say &infix:<+>.line;   # OUTPUT: «208␤»

如果代码对象是自动生成的(因此在源代码中声明),则 line 返回封闭作用域声明开始的行。例如,当在 has $.name 语法生成的 自动生成访问器方法 上调用时,line 返回方法的类声明开始的行。

例如,如果您有以下源文件

class Food {                # Line 1 
    has $.ingredients;      # Line 2 
                            # Line 3 
    method eat {};          # Line 4 
}                           # Line 5

那么 line 方法将为您提供以下输出

say Food.^lookup('eat').line;          # OUTPUT: «4␤» 
say Food.^lookup('ingredients').line;  # OUTPUT: «1␤»