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 = 4
return
をしなくても最終行が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
オブジェクト的なやつを作ってバインドする。