да, вы можете перебирать все свойства объекта B в Qml. Но вы получите все свойства, включая сигналы и слоты.
в QML:
Item{
A {
id: a;
}
Componet.onCompleted: {
var bItem = a.getChild(0)
for (var p in bItem )
console.log(p + ": " + item[p]);
}
}
Это должно вернуть список свойств и значений, включая возраст.
Все они в точности идентичны
"a $b {$c}"
qq "a $b {$c}"
Q :qq "a $b {$c}"
Q :double "a $b {$c}"
Q :b :s :a :h :c :f "a $b {$c}"
Q :backslash :scalar :array :hash :closure :function "a $b {$c}"
Чтобы синтаксический анализатор строковых литералов рассматривал {}
как создающее замыкание, ему необходимо включить функцию замыкания.
Одной из вещей, которую позволяют :qq
/ :double
, является :c
/ :closure
.
Вы также можете отключить его с помощью :!closure
.
say qq :!closure "{ 1 + 2 }";
# { 1 + 2 }
То есть он начинается с семантики :qq
/ :double
и отключает семантику :closure
.
Здесь - это то, где функция qq
определена в Rakudo
role qq does b1 does c1 does s1 does a1 does h1 does f1 {
token starter { \" }
token stopper { \" }
method tweak_q($v) { self.panic("Too late for :q") }
method tweak_qq($v) { self.panic("Too late for :qq") }
}
b1
включает обратную косую черту
c1
включает закрытие [ 1134]
s1
включает скаляр
a1
включает массив
h1
включает хэш
f1
включает функцию
""
- это сокращение от qq ""
qq ""
- это сокращение от Q :qq ""
/ Q :double ""
:qq
/ :double
сокращенно от всех :backslash
:closure
:scalar
:array
:hash
:function
. Также, возможно, стоит добавить примеры для всех этих функций.
Я не рассматриваю это как недокументированную функцию, а скорее как присущую дизайну существующих функций.
Строка двойной кавычки ("..."
) интерполирует выражения вида {...}
как код. Так что это просто работает.
Цитата q
, по умолчанию, похожа на одиночную строку цитаты ('...'
). Таким образом, по умолчанию он не интерполирует выражения вида {...}
. Но если вы добавите наречие c
, тогда действительно интерполирует эти блоки c
од, поэтому то же самое, что по умолчанию работает в строках с двойными кавычками, работает и с q:c
.
Или, может быть, Я что-то упустил. Мы, кажется, грубо дополняем наши слепоты. Вместе у нас может быть видение 50/50, что бы это ни значило. :)