Сообщение от micscr
|
Это у вас очень чудное правило.
Которое больше как фонит тем что вы не разобрались в разнице , мол эзотерика. Нет эзотерики, код для шага цикла ничего не возвращает, поэтому для него нет разницы, и писать ++i несколько паливно
|
Какaя разница в постинкременте или преинкременте там, где это ни на что не влияет?
А раз разницы нет - есть свобода для проявления индивидуально творческого стиля.
Иногда вообще пишут «I+++j»…
Сообщение от Aetae
|
Я вот люблю битовые флаги, типа:
const Action = {
DEFAULT: 0b000000000, // do nothng
DELETE: 0b000000001, // to trash
ARCHIVE: 0b000000010, // to archive
FINALIZE: 0b000000100, // remove "new" label and star
ADD_LABEL: 0b000001000, // add specified label
READ: 0b000010000, // mark as read
}
|
Если идти строго по Си, можно и так:
const C_Struct = {
Field_1 :1, // 1 бит
Field_2 :2, // 2 бита
Field_3 :2, // 2 бита
Field_4 :3 // 3 бита
}
var MyFields = {
_struct :C_Struct,
Fields :0x9D
}
function Read_CStruct(Struct, Field) {
var i = 0;
for(var id in Struct._struct) {
if(id == Field)
return (Struct.Fields >> i) & ~(-1 << Struct._struct[id]);
i += Struct._struct[id];
}
}
console.log(`Field_3: ${Read_CStruct(MyFields, "Field_3")}`);