Как было сказано в комментарии выше, есть способ передать несколько аргументов. Возможно, есть более элегантный способ, но он работает.
jq --arg key1 $k1 --arg key2 $k2 --arg key3 $k3 --arg key4 $k4 '.[$key1] | .[$key2] | .[$key3] | .[$key4] '
jq --arg key $k ' if key != "" then .[$key] else . end'
jq --arg key $k ' if type == "array" then .[$key |tonumber] else .[$key] end'
, конечно, вы можете их комбинировать!
Ваш синтаксис для именованных кортежей в качестве типа возврата метода неверен:
public interface IFoo {
(T1 result1, T2 result2) Bar();
}
Примечание. Это связано с тем, что тип возвращаемого значения определяет тип и имя, а присвоение имен литералу кортежа определяет значение и имя.
// Method return syntax. Type & Name
public (bool success, T payload) TryGetPayload<T>() { }
// Literal assignment syntax. Name & Value
var result = (success: true, payload: t);