1日五つ強くなる。
TweetNode.js
https://www.katacoda.com/courses/nodejs/playground
Node.js
const lodash = require('lodash')
console.log(lodash)- npm install もできる。
Node.js
const http = require('http')
const handler = (req, res) => {
res.writeHead(200) // response のヘッドにステータスを書く
res.end('hello,world') // 返す内容の body
}
const server = http.createServer(handler) // サーバーインスタンスを作る
server.listen(3000, () => console.log('start')) // listern でスタートアイデア
- WebSocket 通信を ローカルの Node.js から WebSocket のサーバーにアクセスすれば、ブラウザを立ち上げずに通信できるのでは。
- さらにローカルの Node.js から OSC を発すれば、Max for Live で受けて何かできるかも。
TypeScript
http://www.typescriptlang.org/play/
TypeScript
const func1 = (num: number): number => num * 2
const res = func1(2)
console.log(2)- 基本、値の後ろに
:で型をつける。 - 関数の場合は
()が関数の返り値を示しているような雰囲気。
Golang
Golang
package main
import (
"fmt"
)
func func1(num int) int {
return num * 2
}
func func2(x, y int) int {
return x * y * 2
}
func main() {
fmt.Println(func1(4))
fmt.Println(func2(4, 5))
}- TypeScript 風の位置に型を書くが、
:を使わずに普通に後ろにつける。 - 関数を定義するには
funcと書く。 Rust にも似ている。
Rust
Rust
fn add(num: i32) -> i32 {
num
}
fn main() {
println!("{}", add(0));
}Rust
fn add(num: i32) -> i32 {
num; // ";" をつけると、返らなくなる。
}
fn main() {
println!("{}", add(0));
}- 関数定義は
fnで始める。 - 引数の型は TypeScript 風に
:を値の後ろにつけて「型」だが、返り値の型は->の後ろに書く。 - また、OCaml と同じく、明示しなくとも最終行が
returnされる。 ;をつけると、何も返らなくなる。returnを書いても良い。- 文字列の中
" "に{}を書くと、そこに値がすっと入る。特にprintlnは文字列しか受け取らないようなので、関数で数字を返す時には、{}を使って文字列に埋め込むこと。
OCaml
Ocaml
# let fun1 x = x * 2;;
val fun1 : int -> int = <fun>
# let res = fun1 2;;
val res : int = 4returnをしなくても最終行がreturnされる。()関数の定義にも実行にも使わない。- 関数を定義する場合には変数に入れる風なので、JS のアローファンクションのような気持ち。
Ocaml
type my_profile = {
id: int;
name: sting;
}type name = {}という部分は TypeScript と同じっぽい。- 数字の型は Golang と同じく int。
- JS のオブジェクトと違って、型定義で
name:type; と指定する。;で区切るイメージ。 - コンマを入れたくなるが、入れたらダメ。
Ocaml
type profile = {id: int; name: string}
let nakanishi = {id= 4; name= "Nakanishi"}- type を宣言
recordオブジェクト的なやつを作ってバインドする。