開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Perl 6 (プログラミング言語)
- Rakudo(コンパイラ、実装)
Think Perl 6: How to Think Like a Computer Scientist (Laurent Rosenfeld(著)、Allen B. Downey(著)、Oreilly & Associates Inc)のPart 1(Starting with the basics)、Chapter 9(Arrays and Lists)の Exercise: Other Ways to Modify an Array.を取り組んでみる。
Exercise: Other Ways to Modify an Array.
コード(Emacs)
#!/usr/bin/env perl6
# -*- coding: utf-8 -*-
sub my-pop(@array where @array > 0) {
my $result = splice @array, @array.elems - 1, 1;
return $result[0];
}
sub my-unshift(@array, $item) {
splice @array, 0, 0, $item;
return @array;
}
sub my-push(@array, $item) {
splice @array, @array.elems, 0, $item;
return @array;
}
sub my-delete(@array, $i where 0 <= $i < @array.elems) {
my $result = splice @array, $i, 1, Any;
return $result[0];
}
my @array1 = 1..10;
my @array2 = 1..10;
say @array1;
say @array2;
say 'pop';
say pop @array1;
say @array1;
say my-pop @array2;
say @array2;
say 'unshift';
say unshift @array1, 0;
say @array1;
say my-unshift @array2, 0;
say @array2;
say 'push';
say push @array1, 10;
say @array1;
say my-push @array2, 10;
say @array2;
say 'delete';
say @array1[2]:delete;
say @array1;
say my-delete(@array2, 2);
say @array2;
入出力結果(Terminal, REPL)
$ ./sample_other.pl [1 2 3 4 5 6 7 8 9 10] [1 2 3 4 5 6 7 8 9 10] pop 10 [1 2 3 4 5 6 7 8 9] 10 [1 2 3 4 5 6 7 8 9] unshift [0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9] [0 1 2 3 4 5 6 7 8 9] push [0 1 2 3 4 5 6 7 8 9 10] [0 1 2 3 4 5 6 7 8 9 10] [0 1 2 3 4 5 6 7 8 9 10] [0 1 2 3 4 5 6 7 8 9 10] delete 2 [0 1 (Any) 3 4 5 6 7 8 9 10] 2 [0 1 (Any) 3 4 5 6 7 8 9 10] $
0 コメント:
コメントを投稿