2012-01-16 5 views
-4

Можно ли использовать именованные аргументы в Java или Javascript с регулярными выражениями как имена аргументов? Я хочу, чтобы сделать его можно вызвать функцию следующим образом:Использование именованных аргументов в Javascript с регулярными выражениями как имена аргументов

f("function name:", "drawCircle", "radius:" 1, "xPos:" 0, "yPos:", 0, "color:", "red"); 

Или, как это, с точно таким же эффектом:

f("name of function:", "draw a circle", "y position:", 0, "color:", "red", "rad:" 1, "x location:" 0); 

Оба они должны быть эквивалентны обув (1, 0, 0, красный).

В обоих случаях приведенные аргументы должны соответствовать списку регулярных выражений. Должно быть возможно перечислить аргументы и имя функции в любом порядке с тем же результатом.

Есть ли способ реализовать что-то вроде этого?

+1

Просто чтобы быть ясно, Java и JavaScript имеют очень мало общего. Это совершенно разные языки. – Pointy

+0

Также не забудьте объявить свои локальные (JavaScript) переменные с помощью 'var' !! – Pointy

+0

Я использую пакет javax.script, используя Javascript внутри Java. Я использовал Javascript, потому что предпочитаю работать с языками программирования, которые используют замыкания/вложенные функции. –

ответ

5
f({ 
    "name": "drawCircle", 
    "radius": 1, 
    "xPos": 0, 
    "yPos": 0, 
    "color": "red" 
}); 

Именно поэтому вы используете объекты в javascript.

Хотя вы, вероятно, хотите

drawCircle({ 
    radius: 0, 
    x: 0, 
    y: 0, 
    color: "red" 
}); 
+0

Я хочу нечто подобное (в псевдокоде, используя регулярные выражения, которые должны быть сопоставлены строками в конструкторе). f ({ '/ (fun (ction |)) (|) (name | nm) /:" drawCircle ", /(rad) (| ius)/i: 1, /(xPos)/i: 0 , /(y) (|) (pos) (ition |)/i: 0, /color/i: «красный» }); ' –

+1

@AndersonGreen, который звучит совершенно бесполезно. Каков ваш прецедент? – Raynos

+0

Я пытаюсь использовать строки, которые соответствуют определенным регулярным выражениям в качестве имен аргументов. Каждое имя аргумента в вызове функции должно соответствовать точно одному регулярному выражению. Я пытаюсь упростить запоминание имен аргументов, разрешив несколько имен для каждого аргумента. –