本質的な話題から離れて恐縮ですが・・・
無名関数とクロージャは違う概念だと思うのですが、PHPでは無名関数のことをクロージャと呼ぶのですね。 クローズ(抱える、閉じ込める)しないのにクロージャと呼ぶのが奇妙に思えました。
- 関数 (function)
- 処理のまとまり
- 関数名を付けて定義するのが一般的
- 関数名付き関数を変数に代入したり関数の引数に渡すことができる言語とできない言語がある
- 無名関数 (anonymous function, lambda expression)
| import random | |
| import pygame | |
| from abc import ABC, abstractmethod | |
| from typing import Generator | |
| PLACE = tuple[int, int] # (x, y) | |
| COLOR = tuple[int, int, int] # (Red, Green, Blue) | |
本質的な話題から離れて恐縮ですが・・・
無名関数とクロージャは違う概念だと思うのですが、PHPでは無名関数のことをクロージャと呼ぶのですね。 クローズ(抱える、閉じ込める)しないのにクロージャと呼ぶのが奇妙に思えました。
https://qiita.com/decopon1476052/items/7227fcd2f233a3ad481e#comment-29474b93d4f66bb74094
| 層 | 名称 | 郵便 | インターネット |
|---|---|---|---|
| 8 | ユーザ層 | 伝えたい・届けたい内容 | データ |
| 7 | アプリケーション層 | 郵送手段、手順 (葉書、封書、小包など) |
アプリが使うプロトコル (SMTP、FTP、HTTP等) |
| 6 | プレゼンテーション層 | 見せ方、構成 (文、絵、点字など) |
コード、フォーマット |
| 5 | セッション層 | 往復葉書、返信封筒、文通 | サービス継続管理 |
| 4 | トランスポート層 | 人まで、配達証明 (氏名) |
サービスに届くまで (ポート番号) |
| 3 | ネットワーク層 | 建物まで (住所) |
ホストに届くまで (IPアドレス) |
| 2 | データリンク層 | 最寄りのポスト・郵便局まで(目印) | 最寄りの中継地点まで(MACアドレス) |
| import random | |
| import numpy as np | |
| import pygame | |
| from abc import ABC, abstractmethod | |
| from typing import Generator | |
| from numpy.typing import NDArray | |
| class Color: | |
| GREEN = (34, 139, 34) |
| #!/usr/bin/env python3 | |
| import sys | |
| import argparse | |
| TRANS = { | |
| # op: (nest, python_code) | |
| '>': (0, 'index += 1'), | |
| '<': (0, 'index -= 1'), | |
| '+': (0, 'memory[index] = (memory[index] + 1) & 0xff'), | |
| '-': (0, 'memory[index] = (memory[index] - 1) & 0xff'), |
| from itertools import permutations | |
| def exp(a, b, *c): | |
| if c: | |
| for op in '+-*/': | |
| yield from exp(f'({a}{op}{b})', *c) | |
| yield from exp(f'({b}{op}{a})', *c) | |
| for i in range(1, len(c) + 1): | |
| yield from exp(*c[:i], f'({a}{op}{b})', *c[i:]) | |
| yield from exp(*c[:i], f'({b}{op}{a})', *c[i:]) |
| def two_digit_sieve(digits: tuple[int], numbers: list[int], i: int = 0) -> bool: | |
| """ | |
| 1桁数列digitsのi番目から順に1桁または2桁の数を作ってnumbersに追加し、digits | |
| をすべて使って数の重複がないnumbersが完成したらTrue、失敗したらFalseを返す | |
| """ | |
| if i == len(digits): | |
| return True # 完成 | |
| if (i + 1 < len(digits) and digits[i] != 0 and | |
| (number := digits[i]*10 + digits[i+1]) not in numbers): | |
| numbers.append(number) # 2桁数で試行 |
| ### tic-tac-toe game | |
| from tkinter import * | |
| from tkinter.messagebox import * | |
| class Board: | |
| def __init__(self, size=3): | |
| self.size = size |
| import random | |
| class Answer: | |
| """出題者""" | |
| def __init__(self, digits: int) -> None: | |
| """digits桁の重複しない数を作って隠し持つ""" | |
| self._number = ''.join(map(str, random.sample(range(0, 10), digits))) |
| public class ParkingSimulator { | |
| public static void main(String[] args) { | |
| Parking parking = new Parking("駅前駐車場", 2); | |
| Car car1 = new Car("品川33 あ 1234"); | |
| Car car2 = new Car("横浜555 い 5678"); | |
| Car car3 = new Car("多摩345 う 9012"); | |
| car1.park(parking); | |
| car2.park(parking); | |
| car3.park(parking); |