亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ChucK初步(5)

2019-11-14 08:53:45
字體:
來源:轉載
供稿:網友

Operators & operations

=> (chuck)+ - * / (arithmetic)% (modulo)&& || == != >= <=” (logic)& | ^ (bitwise)++ – (inc / dec)! + - new (unary)

You may have seen many of the operators in other PRogramming languages (C/java). Some others are native to ChucK. We start with the family of ChucK operators.

=> (the ChucK operator)

The ChucK operator (=>) is a massively(大量地) overloaded operator that, depending on the types involved(包含), performs various actions(執行各種操作). It denotes(表示) **action**, can be chained(鏈接), and imposes(強制執行) and clarifies order(理清順序) (always goes *from left to right*). The ChucK operator is the means by which work is done in ChucK. Furthermore(此外), the ChucK operator is not a single operator, but a family of operators.

=> (foundational(基礎的) ChucK operator)

We start with the standard, plain-vanilla(普通的,無修飾的) ChucK operator (=>). It is left-associative (all ChucK operators are), which allows us to specify(指定) any ordered flow of data/tasks/modules (such as unit generator connection) from left to right, as in written (English) text. What => does depends on the context(環境). It always depends on the type of the entity(實體) on the left (the chucker(投手)) and the one on the right (the chuckee(接球手)), and it sometimes also depends on the nature of the entity (such as whether it is a variable(變量的) or not).

Some examples: (用了c的高亮,至少好看點)

// a unit generator patch - the signal flow is apparent// (in this case, => connects two unit generators)SinOsc b => Gain g => BiQuad f => dac;// add 4 to foo, chuck result to new 'int' variable 'bar'// (in this case, => assigns a value to a variable (int)4 + foo => int bar;// chuck values to a function == function call// (same as Math.rand2f( 30, 1000))( 30, 1000 ) => Math.rand2f;

There are many other well-defined(定義明確的) uses of the ChucK operator, depending on the context.

@=> (explicit(明確的) assignment(分配) ChucK operator)

In ChucK, there is no stardard assignment operator (=), found in many other programming languages. Assignment is carried out using ChucK operators. In the previous examples, we have used => for assignment:

// assign 4 to variable foo4 => int foo;// assign 1.5 to variable bar1.5 => float bar;// assign duration of 100 millisecond to duh100::ms => dur duh;// assign the time "5 second from now" to later5::second + now => time later;

The @=> explicit assignment ChucK operator behaves exactly the same for the above types (int, float, dur, time). However, the difference is that @=> can also be used for reference assignments(分配) of objects (see objects and classes) whereas(然而) => only does assignment on primitive(原始的) types (int, float, dur, time). The behavior(行為) of => on objects is completely context-dependent(上下文相關的).

// using @=> is same as => for primitive types4 @=> int foo;// assign 1.5 to variable bar1.5 @=> float bar;// (only @=> can perform reference assignment on objects)// reference assign moe to larry// (such that both moe and larry reference the same object)Object moe @=> Object @ larry;// array initialization[ 1, 2 ] @=> int ar[];// using newnew Object @=> moe;

In its own screwed-up(糟透了的) way, this is kind of nice because there is no confusion(混淆) between assignment (@=> or =>) and equality (==). In fact, the following is not a valid ChucK statement(聲明):

// not a valid ChucK statement!int foo = 4;

+=> -=> *=> /=> etc. (arithmetic(算數) ChucK operators)

These operators are used with variables(變量) (using ‘int’ and ‘float’) to perform one operation with assignment(執行一個有分配的操作).

// add 4 to foo and assign result to foofoo + 4 => foo;// add 4 to foo and assign result to foo4 +=> foo;// subtract 10 from foo and assign result to foo// remember this is (foo-10), not (10-foo)10 -=> foo;// 2 times foo assign result to foo2 *=> foo;// divide 4 into foo and assign result to foo// again remember this is (foo/4), not (4/foo)4 /=> foo;

It is important to note the relationship between the value and variable when using -=> and /=>, since these operations are not commutative(交換的).

// mod foo by T and assign result to fooT %=> foo;// bitwise(按位) AND 0xff and bar and assign result to bar0xff &=> bar;// bitwise OR 0xff and bar and assign result to bar0xff |=> bar;

+ - * / (arithmetic)

// divide (and assign)16 / 4 => int four;// multiply2 * 2 => four;// add3 + 1 => four;// subtract93 - 89 => four;

cast(轉換)

ChucK implicitly(隱式地) casts int values to float when float is expected, but not the other around. The latter could result in a loss of information and requires an explicit(明確的) cast.

// adding float and int produces a float9.1 + 2 => float result;// however, going from float to int requires cast4.8 $ int => int foo; // foo == 4//這里的$是什么意思?// this function expects two floatsMath.rand2f( 30.0, 1000.0 );// this is ok because of implicit castMath.rand2f( 30, 1000 );

% (modulo(取模))

The modulo operator % computes the remainder(余數) after integer(整數), floating point, duration, and time/duration division.

// 7 mod 4 (should yield(產生) 3)7 % 4 => int result;// 7.3 mod 3.2 floating point mod (should yield .9)7.3 % 3.2 => float resultf;// duration mod5::second % 2::second => dur foo;// time/duration modnow % 5::second => dur bar;

the latter (time/duration mod) is one of many ways to dynamically(動態地) synchronize(同步) timing in shreds. the examples otf_01.ck through otf_07.ck (see under examples) make use of this to on-the-fly(運行時) synchronize its various parts, no matter when each shred is added to the virtual(虛擬的) machine:

// define period (agreed upon by several shreds).5::second => dur T;// compute the remainder(余數) of the current period ...// and advance time by that amountT - (now % T) => now;// when we reach this point, we are synchronized to T period boundary// the rest of the code// ...

This is one of many ways to compute and reason about(思考) time in ChucK. The appropriate(適當的) solution(解決方案)(s) in each case depends on the intended(打算的) functionality(功能).

&& || == != > >= < <= (logic)(邏輯)

Logical operators - each of these need two operands(操作數). The result is an integer value of 0 or 1.

&& : and|| : or== : equals!= : does not equal> : greater than>= : greater than or equal to< : less than<= : less than or equal to // test some universal truths(普遍的真理)if( 1 <= 4 && true ) <<<"horray">>>;

>> << & | ^ (bitwise)(按位)

These are used on int values at the bit level, often for bit masking.

>> : shift bits right(右移位) ( 8 >> 1 = 4 )<< : shift bits left ( 8 << 1 = 16 )& : bitwise AND| : bitwise OR^ : bitwise XOR

++ – (inc / dec)

Values may be incremented or decremented by appending(附加) the ++ or -- operators.

4 => int foo;foo++;foo--;

! + - new (unary(一元的))

These operators come before(位于…之前) one operand(操作數).

// logical invertif( !true == false ) <<<"yes">>>;// negative-1 => int foo;// instantiate objectnew object @=> object @ bar;
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日本欧美在线视频| 成人网页在线免费观看| 久久av在线播放| 国产精品丝袜高跟| 日韩免费电影在线观看| 国产精品男女猛烈高潮激情| 国产精品观看在线亚洲人成网| 亚洲美女性生活视频| 91精品久久久久久久久不口人| 成人免费直播live| 欧美精品videos另类日本| 欧美日韩一区二区免费在线观看| 国产精品香蕉国产| 午夜欧美不卡精品aaaaa| 国产成人91久久精品| 国产日韩专区在线| 日韩亚洲精品视频| 欧美三级欧美成人高清www| 91精品国产综合久久香蕉| 538国产精品一区二区在线| 日韩在线小视频| 黑人狂躁日本妞一区二区三区| 亚洲欧美在线免费观看| 欧美大片网站在线观看| 亚洲精品第一国产综合精品| 久久久久久久影院| 精品国内产的精品视频在线观看| 91超碰中文字幕久久精品| 欧美性xxxxxxx| 日韩中文视频免费在线观看| 久久久久九九九九| 性欧美xxxx视频在线观看| 色偷偷亚洲男人天堂| 亚洲乱码av中文一区二区| 日韩网站免费观看| 国产精品成人av性教育| 亚洲丝袜一区在线| 色与欲影视天天看综合网| 国产精品三级久久久久久电影| 在线一区二区日韩| 久久福利视频导航| 日韩电影中文 亚洲精品乱码| 久久久久久综合网天天| 两个人的视频www国产精品| 久久久在线观看| 日韩av电影在线网| 欧美日韩国产二区| 国产91网红主播在线观看| 亚洲自拍另类欧美丝袜| 在线精品国产成人综合| 97久久超碰福利国产精品…| 国产亚洲日本欧美韩国| 久久97久久97精品免视看| 日本成人黄色片| 久久免费视频网| 国产精品成人一区二区| 国产在线视频欧美| 亚洲精品久久久久久久久| 久久久久国产一区二区三区| 亚洲区bt下载| 欧美大片在线看免费观看| 国产精品美女av| 91麻豆国产精品| 大胆人体色综合| 欧美丰满片xxx777| 7m第一福利500精品视频| 精品国产乱码久久久久酒店| 久久精品美女视频网站| 亚洲色图五月天| 国产日韩精品综合网站| 中文字幕精品久久| 久久夜精品香蕉| 国产精品网红福利| 国产精品69久久| 欧美不卡视频一区发布| 日韩av日韩在线观看| 欧美一区二区.| 欧美性做爰毛片| 国产精品丝袜白浆摸在线| 国产午夜精品视频| 国产欧美精品在线播放| 国产精品h在线观看| 欧美日韩国产一区二区| 国产一区深夜福利| 欧美亚洲另类制服自拍| 国产福利精品视频| 日韩视频永久免费观看| 国产欧美精品日韩精品| 亚洲人成电影网站| 亚洲欧美激情一区| 日韩欧美aⅴ综合网站发布| 国产精品第1页| 伦伦影院午夜日韩欧美限制| 国产午夜精品全部视频在线播放| 51精品国产黑色丝袜高跟鞋| 亚洲三级黄色在线观看| 日韩av中文字幕在线免费观看| 亚洲国产精品久久久久秋霞蜜臀| 欧美激情一区二区三区成人| 一本色道久久88亚洲综合88| 亚洲国产精品悠悠久久琪琪| 欧美日韩黄色大片| 6080yy精品一区二区三区| 亚洲欧洲一区二区三区久久| 精品国产91久久久久久| 欧美夫妻性生活xx| 55夜色66夜色国产精品视频| 欧美香蕉大胸在线视频观看| 日韩亚洲成人av在线| 日韩在线免费高清视频| 久久综合色影院| 欧美国产视频一区二区| 性夜试看影院91社区| 91亚洲国产成人精品性色| 亚洲国产美女精品久久久久∴| 欧美激情小视频| 5566成人精品视频免费| 亚洲日本欧美中文幕| 久久亚洲成人精品| 91精品国产色综合久久不卡98| 日韩欧美aⅴ综合网站发布| 亚洲国产欧美一区二区丝袜黑人| 久久精品91久久久久久再现| 精品久久久久久久久久久久久| 国产精品免费视频xxxx| 日韩av快播网址| 懂色av影视一区二区三区| 国产欧美在线播放| 精品美女永久免费视频| 日本午夜人人精品| 久久久久久久国产精品| 国产成人精品久久二区二区91| 久久久久久久一区二区| 日韩在线播放视频| 一区二区亚洲精品国产| 成人网页在线免费观看| 国产精品视频精品| 欧美日韩一区二区三区在线免费观看| 欧美性xxxxxx| 亚洲精品小视频| 亚洲偷熟乱区亚洲香蕉av| 久久五月天色综合| 国产精品成人久久久久| 久久好看免费视频| 91精品国产综合久久男男| 亚洲成人中文字幕| 欧美综合国产精品久久丁香| 亚洲自拍小视频免费观看| 亚洲人成在线免费观看| 亚洲国产欧美自拍| 国产99久久精品一区二区 夜夜躁日日躁| 亚洲国产一区二区三区在线观看| 国产日韩在线免费| 国产精品久久久久免费a∨大胸| 精品国产91乱高清在线观看| 性日韩欧美在线视频| 中文字幕欧美日韩| 91久久中文字幕| 亚洲人在线视频| 免费97视频在线精品国自产拍| 欧美国产第一页| 在线成人激情视频| 久久久伊人欧美| 国产精品影院在线观看|