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

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

ChucK初步(5)

2019-11-14 09:44:58
字體:
來源:轉載
供稿:網友

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
久久91亚洲精品中文字幕| 亚洲午夜久久久影院| 欧美大片va欧美在线播放| 另类专区欧美制服同性| 久久久久99精品久久久久| 亚洲精品久久7777777| 欧美老女人在线视频| 欧美大全免费观看电视剧大泉洋| 在线播放精品一区二区三区| 亚洲社区在线观看| 黄色精品一区二区| 欧美裸体男粗大视频在线观看| 美女视频黄免费的亚洲男人天堂| 国产精品青青在线观看爽香蕉| 91精品国产精品| 国产精品视频在线播放| 亚洲天堂男人天堂女人天堂| 欧美性高潮在线| 国产日韩综合一区二区性色av| 在线日韩日本国产亚洲| 精品magnet| 国产精品大片wwwwww| 亚洲影院色无极综合| 国产精品成人一区二区| 国产日韩换脸av一区在线观看| 国产精品入口免费视| 亚洲一区二区三区四区在线播放| 羞羞色国产精品| 久久久精品电影| 日韩女在线观看| 亚洲男人av电影| 国产精品久久久久久久电影| 久久影视电视剧免费网站清宫辞电视| 国产在线观看精品一区二区三区| 国产成人高潮免费观看精品| 欧美视频在线观看免费网址| 在线日韩av观看| 欧美中文在线观看国产| 久久影院资源网| 中文字幕亚洲一区在线观看| 国产精国产精品| 久久影视电视剧凤归四时歌| 国产91精品青草社区| 国产激情综合五月久久| 国产精品久久99久久| 国产一区二区三区毛片| 91精品国产91久久| 国产不卡在线观看| 亚洲亚裔videos黑人hd| 欧美成人免费全部| 国产精品一区二区三区久久| 丝袜美腿精品国产二区| 深夜福利日韩在线看| 精品久久久免费| 国产一区二区三区毛片| 亚洲精品欧美日韩专区| 国产欧美精品一区二区三区-老狼| 日韩av手机在线看| 国产精品视频区| 亚洲精品国产电影| 亚洲第一视频网站| 日韩av手机在线看| 亚洲欧美色婷婷| 国产精品久久久久久久久久| 亚洲免费小视频| 中文字幕一区二区三区电影| 欧美日韩亚洲系列| 日韩中文字幕免费视频| 亚洲欧美在线一区| 69视频在线播放| 国产丝袜高跟一区| 91色p视频在线| 国产成人精品综合久久久| 亚洲精品自拍第一页| 国产午夜精品免费一区二区三区| 美女扒开尿口让男人操亚洲视频网站| 这里只有精品在线播放| 国产精品久久久久国产a级| 欧美性少妇18aaaa视频| 国产精品成人观看视频国产奇米| 欧美性xxxx极品高清hd直播| 欧美国产日韩一区二区| 亚洲天堂av女优| 欧美高清电影在线看| 国产精品久久久久久久久久免费| 2019中文字幕在线| 国产亚洲免费的视频看| 亚洲在线第一页| 久久国产一区二区三区| 疯狂蹂躏欧美一区二区精品| 亚洲人成网在线播放| 国产精品99久久久久久白浆小说| 亚洲国产成人av在线| 久久人人爽人人爽人人片av高请| 日本不卡高字幕在线2019| 国产一区二区三区在线视频| 日本午夜在线亚洲.国产| 俺去了亚洲欧美日韩| 国产精品日韩在线一区| 精品一区精品二区| 国产福利精品av综合导导航| 欧美与欧洲交xxxx免费观看| 亚洲最大成人在线| 欧美在线视频a| 亚洲色图在线观看| 大量国产精品视频| 亚洲欧美中文日韩v在线观看| 成人精品一区二区三区电影黑人| 国产精品高潮呻吟久久av野狼| 91免费电影网站| 久久99久久99精品中文字幕| 国产精品福利观看| 亚洲伊人一本大道中文字幕| 久久九九有精品国产23| 日韩毛片在线观看| 九九热这里只有在线精品视| 精品国偷自产在线| 国产亚洲免费的视频看| 最新日韩中文字幕| 欧美中在线观看| xxx成人少妇69| 久久综合国产精品台湾中文娱乐网| 日韩免费av一区二区| 欧美激情在线有限公司| 在线播放日韩精品| 欧洲精品久久久| 精品国产一区二区三区久久久狼| 成人伊人精品色xxxx视频| 亚洲成年网站在线观看| 在线视频欧美日韩精品| 国产福利视频一区二区| 久久久久女教师免费一区| 丝袜美腿精品国产二区| 久久精品国产99国产精品澳门| 午夜免费久久久久| 隔壁老王国产在线精品| 在线中文字幕日韩| 欧美激情亚洲国产| 久久精品视频中文字幕| 亚洲在线一区二区| 91精品视频在线播放| 亚洲欧美国内爽妇网| 日韩电影免费观看在线| 色婷婷亚洲mv天堂mv在影片| 成人激情视频网| 久久免费少妇高潮久久精品99| 伊人久久综合97精品| 91精品国产高清| 中文字幕日韩精品在线| 91亚洲国产成人精品性色| 日本精品免费一区二区三区| 国产精品视频1区| 日韩精品中文字幕在线| 欧美日韩一区二区三区在线免费观看| 精品无人区太爽高潮在线播放| 国产在线观看精品一区二区三区| 色无极影院亚洲| 在线播放亚洲激情| 国内伊人久久久久久网站视频| 欧美视频在线观看免费网址| 亚洲最新中文字幕| 国产精品一区二区三区久久久| 欧美午夜精品久久久久久浪潮| 亚洲国产精品悠悠久久琪琪|