Как использовать внутреннюю функцию .year в KDB?

Я хотел бы использовать точечную нотацию для извлечения года даты.

q) myDate:2014.01.01;
q) myDate.year
2014i           / works OK

Но когда внутри функции,

f:{[x] :x.year};
f[myDate]

Я получаю сообщение об ошибке (использую Studio для KDB+)

An error occurred during execution of the query.
The server sent the response:
x.year

Что происходит не так?


person mchen    schedule 16.04.2014    source источник


Ответы (1)


Согласно этой странице на code.kx, такое поведение является причудой q. Чтобы обойти это, вы можете использовать функцию приведения.

q)f:{[x] :`year$x}
q)f[myDate]
2014i
person jgleeson    schedule 16.04.2014