2017-03-23 10 views
3

ソースリストを変更せずにリストからサブリストを取得するQore演算子/関数があります。つまり、substr()に相当します。 extract演算子は元のリストから項目を削除します。Qoreのリストからアイテムのシーケンスを取得する方法

list l = (1,2,3,4,5,6,7,8,9); 
list l2 = extract l, 2, 4; 
printf("l:%y\nl2:%y\n", l, l2); 

l:[1, 2, 7, 8, 9] 
l2:[3, 4, 5, 6] 

答えて

2

selectオペレータは、インデックスとして拡張された状態引数$#マクロに対応しています。あなたがあなた自身の質問への答えで述べたように

list l = (1,2,3,4,5,6,7,8,9); 
list l2 = select l, $# >= 2 && $# <2+4; 
printf("l:%y\nl2:%y\n", l, l2); 

l:[1, 2, 3, 4, 5, 6, 7, 8, 9] 
l2:[3, 4, 5, 6] 
2

selectオペレータが最適なソリューションです。

演算子spliceextractは、両方ともリストオペランドを変更しますが、これは必要ではありません。

Qore(1781)にはまだリリースの対象外ですが、興味があれば次のメジャーリリース(0.8.13)に移行する可能性があることに注意してください。

+0

Qore 0.8.13はリストスライス+範囲演算子などを明示的にサポートしてリリースされています。 https://docs.qore.org/qore-0.8.13/lang/html/operators.html#range_operatorおよびhttps://docs.qore.org/qore-0.8.13/lang/html/operators.htmlを参照してください。詳細については#list_element_operatorをご覧ください –

関連する問題