# Список как аргумент вызываемой функции
# Условия
- dApp использует Стандартную библиотеку версии 4 и выше.
 - Элементы списка относятся к одному из следующих типов:
 
Вложенные списки не допускаются в качестве аргументов вызываемой функции (в отличие от функций без аннотации).
# Код Ride
Аргумент-список указывается в виде
arg_name: List[elem_type]
Пример скрипта:
{-# STDLIB_VERSION 8 #-}
{-# CONTENT_TYPE DAPP #-}
{-# SCRIPT_TYPE ACCOUNT #-}
@Callable(i)
func join(strings: List[String]) = {
   [
      StringEntry(toBase58String(i.caller.bytes), strings[0] + "_" + strings[1] + "_" + strings[2])
   ]
}
# Вызов скрипта
Создать и отправить транзакцию вызова скрипта можно с помощью клиентских библиотек.
# JavaScript
const { invokeScript, broadcast } = require('@waves/waves-transactions');
// Нода Testnet
// Для Mainnet можно использовать значение по умолчанию
const nodeUrl = 'https://nodes-testnet.wavesnodes.com'; 
const seed = 'insert your seed here';
  // Параметры вызова скрипта
const invParams = {
  dApp: "3MyptFjRHW4CTPNQKdF8mu3izsZEPEdzm8s",
  payment: [],
  call: {
    function: 'join',
    args: [
      {
        type: 'list',
        value: [
          { type: 'string', value: 'alpha' },
          { type: 'string', value: 'beta' },
          { type: 'string', value: 'gamma' }
        ]
      }
    ]
  },
  chainId: 'T' // Для Mainnet можно указать значение 'W' или опустить
};
// Создание и подписание транзакции вызова скрипта
const invokeTx = invokeScript(invParams, seed); 
broadcast(invokeTx,nodeUrl).then(resp => console.log(resp));
console.log('Tx ID: ' + invokeTx.id);
💡 Чтобы вызывать скрипт от имени разных пользователей, используйте библиотеку Signer.
# Python
Отправьте транзакцию Invoke Script.