규칙추가

2026년 4월 29일 09:30분

민수기 15장은 가나안 입성 후 지킬 헌물 규정을 보완합니다. 이전 법에 새 조항을 추가하는 구조입니다. 나는 규칙을 리스트로 관리하고 런타임에 추가할 수 있는 규칙 레지스트리를 만들었습니다.

package com.jesusbornd.numbers;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;

public class Numbers_15_Chapter_Lv2 {

    record Offering(String type, int size) {}
    record Rule(String name, Function<Offering, String> apply) {}

    static class RuleRegistry {
        private final List<Rule> rules = new ArrayList<>();

        RuleRegistry add(Rule rule) { rules.add(rule); return this; }

        void apply(Offering o) {
            System.out.println("제물: " + o.type() + " (크기 " + o.size() + ")");
            rules.forEach(r -> System.out.println("  [" + r.name() + "] " + r.apply().apply(o)));
        }
    }

    public static void main(String[] args) {
        RuleRegistry registry = new RuleRegistry()
            .add(new Rule("기본 소제", o -> "고운 가루 " + (o.size() / 10) + "에바"))
            .add(new Rule("기름 규정", o -> "기름 " + (o.size() / 4) + "힌"))
            .add(new Rule("포도주",   o -> "포도주 " + (o.size() / 4) + "힌"));

        // 보완 추가: 부지중 범죄 속죄 규정
        registry.add(new Rule("부지중 범죄", o -> "숫염소 한 마리 속죄제"));

        registry.apply(new Offering("수소", 100));
    }
}

from dataclasses import dataclass
from typing import Callable

@dataclass
class Offering:
    type: str
    size: int

@dataclass
class Rule:
    name: str
    apply: Callable[["Offering"], str]

class RuleRegistry:
    def __init__(self):
        self._rules: list[Rule] = []

    def add(self, rule: Rule) -> "RuleRegistry":
        self._rules.append(rule)
        return self

    def apply(self, o: Offering):
        print(f"제물: {o.type} (크기 {o.size})")
        for rule in self._rules:
            print(f"  [{rule.name}] {rule.apply(o)}")


if __name__ == "__main__":
    registry = (
        RuleRegistry()
        .add(Rule("기본 소제", lambda o: f"고운 가루 {o.size // 10}에바"))
        .add(Rule("기름 규정", lambda o: f"기름 {o.size // 4}힌"))
        .add(Rule("포도주",   lambda o: f"포도주 {o.size // 4}힌"))
    )

    # 보완 추가: 부지중 범죄 속죄 규정
    registry.add(Rule("부지중 범죄", lambda o: "숫염소 한 마리 속죄제"))

    registry.apply(Offering("수소", 100))

Comments

Avatar
 2026년 4월 29일 20:38분

새로운 상황에 맞게 규칙을 보완하는 것도 중요한 작업이더라고요.



Search

← 목록으로