所以我有以下数据类:
data class Client(val name: String, val pastAddresses: ArrayList<String>)
Run Code Online (Sandbox Code Playgroud)
从以下代码:
val aClient = Client("Alice", arrayListOf("foo", "bar"))
println(aClient)
val cClient = aClient.copy()
cClient.pastAddresses.add("Blah")
cClient.pastAddresses.remove("foo")
println(aClient)
Run Code Online (Sandbox Code Playgroud)
我懂了:
Client(name=Alice, pastAddresses=[foo, bar])
Client(name=Alice, pastAddresses=[bar, Blah])
Run Code Online (Sandbox Code Playgroud)
这意味着Kotlin的数据类中的复制是浅复制。
有没有办法进行深复制?
有没有办法将long我从Double.toLongBits后面得到的 a 反转为 a Double?
以下不起作用:
Double n = 171.30672219;
System.out.println(Double.doubleToLongBits(n));
System.out.println(new Double(Double.doubleToLongBits(n)));
Run Code Online (Sandbox Code Playgroud)
这打印:
4640231336019091517
4.6402313360190915E18
虽然我想找回171.30672219
我有一个数组,数组中的每个项目都是一个由 2 个数字组成的数组,其值在 16 位范围内。
对于数组中的每一项,我需要将这 2 个数字放入一个 32 位整数中,然后将其保存在 MySQL 数据库表中的类型为 的列中varbinary。
我想我需要使用pack模板S!来创建一个 32 位整数,其中包含高/低 16 位中的其他 2 个数字。
我想我需要使用pack模板来I!创建要保存在数据库中的最终值。
但我不确定如何做到这一点,pack而且我不太理解文档中有关如何形成循环的示例。
my( $ip, $cs,
$flags,$fl,$fh,
$ax,$al,$ah, $bx,$bl,$bh, $cx,$cl,$ch, $dx,$dl,$dh,
$si, $di, $bp, $ds, $es ) =
unpack( 'v2' . ('vXXCC' x 5) . 'v5', $frame );
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我如何pack实现这个吗?或者pack这两种情况都不是正确的解决方案?
例如,要创建一个 32 位数字,请使用以下代码片段:
my $number1 = 120;
my $number2 = 3090;
my $word = …Run Code Online (Sandbox Code Playgroud) 如果我在暂存区域中有一个文件(显示在 中git diff --cached)并且我想完全删除它,我该怎么做?
正在做
git reset HEAD -- file
git checkout -- file
Run Code Online (Sandbox Code Playgroud)
是的,但是这 2 个操作有 1 个命令吗?
以下代码段对版本号进行排序.我在脚本中测试它似乎是正确的.
sort {
my @left = split( /\./, $a );
my @right = split( /\./, $b );
if ( $left[0] <=> $right[0] ) {
return $left[0] <=> $right[0];
}
if ( $left[1] <=> $right[1] ) {
return $left[1] <=> $right[1]
}
elsif ( @left < @right ) {
return -1;
}
return @left < @right ? -1 : 1;
} @versions
Run Code Online (Sandbox Code Playgroud)
如何使这个更简洁/更简洁,并在管道序列中运行它.
即numbers_generator | perl -e SORT_HERE | other_command
为什么以下字符串作为JSON与jq一起传递但不与perl一起传递?
例:
$ cat dummy.json | jq '.'
{
"field": {
"customer_id": "abc"
},
"result": "processed"
}
Run Code Online (Sandbox Code Playgroud)
但是perl失败了:
$ cat dummy.json | perl -MData::Dumper -MJSON=decode_json -ne'print decode_json($_)'
, or } expected while parsing object/hash, at character offset 1 (before "\n") at -e line 1.
Run Code Online (Sandbox Code Playgroud)
我在这里搞砸了什么?
为什么以下不能用一个替换多个空行?
$ cat some_random_text.txt
foo
bar
test
Run Code Online (Sandbox Code Playgroud)
这不起作用:
$ cat some_random_text.txt | perl -pe "s/\n+/\n/g"
foo
bar
test
Run Code Online (Sandbox Code Playgroud)
我试图将多个新行(即空行)替换为一个空的新行,但我使用的正则表达式不起作用,如您在示例代码段中所示.
我搞砸了什么?
预期结果是:
foo
bar
test
Run Code Online (Sandbox Code Playgroud) 如果我有一个perl one liner从命令行运行它:例如
perl -MData::Dumper -MJSON=decode_json -e 'my @array = @{decode_json($data)}; foreach my $i (@array) { etc }'
Run Code Online (Sandbox Code Playgroud)
我怎么能格式化它以便它更易读,即添加新行?如果我这样做:
嘛
当我添加这样的新行来格式化代码时,命令会中断
以下代码段正常:
cat versions.txt | perl -Mversion -le'
chomp( @a = <> );
print for sort { $left = $a; $right = $b; $left =~ s!^\D+!!; $right =~ s!^\D+!!; version->parse($left) cmp version->parse($right) } @a;
'
Run Code Online (Sandbox Code Playgroud)
以下代码没有,但我不明白为什么.它们似乎实际上是相同的代码.
use strict;
use warnings;
use version;
chomp(my @versions = <>);
@versions = sort { version->parse($a =~ s/^\D+//r) cmp version->parse($b =~ s/^D+//r) } @versions;
print $_."\n" for @versions;
Run Code Online (Sandbox Code Playgroud)
我明白了:
脚本第7行的版本格式无效(非数字数据)
在以下(简单的)pow(x, n)方法实现中,完全忽略任何优化方法,我发现以下问题:
public double pow(double x, int n) {
boolean negative = n < 0;
long power = Math.abs(n);
double ans = 1.0;
for(long i = 0; i < power; i++) {
ans = ans * x;
}
return negative ? 1.0/ans: ans;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我假设对于负指数的情况,我只需计算x^n然后返回,1/(x^n)因为例如2^(-3) = 1/(2^3)
问题:
代码在以下情况下失败:
pow(2.00000, -2147483648)
输出是1.00000,而预期的正确结果是0.00000
如果我将代码更改如下:
public double pow(double x, int n) {
long power = n;
if(power < 0) {
x = …Run Code Online (Sandbox Code Playgroud) 以下所有内容似乎都有效.但是等价吗?
方法1:
chomp(my @array = <STDIN>);
Run Code Online (Sandbox Code Playgroud)
方法2:
my @array;
chomp(@array = <>);
Run Code Online (Sandbox Code Playgroud)
方法3:
chomp(my @array = <>);
Run Code Online (Sandbox Code Playgroud)