小编ala*_*ska的帖子

perl中的隐式转换

我是Perl的新手,请有人为我解释以下脚本:

#!/usr/bin/env perl
use strict;
use warnings;
sub f1($) { my ($v) = @_; print "f1 $v\n"; }
sub f2(@) { my ($v) = @_; print "f2 $v\n"; }
my $s = "ww";
my @a = ("xx", "yy", "zz");
f1 $s; f1 @a; f2 $s; f2 @a;
Run Code Online (Sandbox Code Playgroud)

我的电脑输出是:

f1 ww
f1 3
f2 ww
f2 xx     # why!!
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么第四个输出是xx?我认为它应该是zz,因为当数组转换为标量时,它应该是数组的最后一个元素.

perl weak-typing implicit-conversion

5
推荐指数
1
解决办法
455
查看次数

我可以使用synchronized到最终字段吗?

考虑下面的代码,我想让它成为一个线程安全类,以便它永远不会得到奇数:

class Test {
  private int value = 0;
  private final Object lock;

  public void add() {
    synchronized (lock) {
      value++;
      value++;
    }
  }

  public int getValue() {
    synchronized (lock) {
      return value;
    }
  } 
}
Run Code Online (Sandbox Code Playgroud)

我现在怀疑锁定领域,这被宣布为最终的,这有关系吗?或者它会打破线程的安全吗?

我认为如果锁定字段没有被声明为final,那么这应该是一个线程安全的类.如果这个结论有误,请指正,谢谢.

java final synchronize

5
推荐指数
1
解决办法
252
查看次数