import t import stdio import testcheck # ============================================================ # Test 1: 泛型函数手动传类型参数 - 基本调用 # def xxx[T](x: int) 然后调用 xxx[T](x) # ============================================================ def double[T](x: int) -> int: return x * 2 def test_explicit_type_arg(): testcheck.section("Test 1: explicit type arg xxx[T](x)") r: t.CInt = double[t.CInt](21) testcheck.check(r == 42, "double[t.CInt](21) = 42", "expect 42") # ============================================================ # Test 2: 泛型函数手动传类型参数 - 多次调用不同类型 # ============================================================ def identity[T](x: int) -> int: return x def test_identity_explicit(): testcheck.section("Test 2: identity[T](x)") r1: t.CInt = identity[t.CInt](10) r2: t.CInt = identity[t.CInt](20) testcheck.check(r1 == 10 and r2 == 20, "identity[t.CInt](10)=10 (20)=20", "expect 10 20") # ============================================================ # Test 3: 泛型函数手动传类型参数 - 用 T 作为参数类型 # ============================================================ def add_one[T](x: T) -> T: return x + T(1) def test_add_one_explicit(): testcheck.section("Test 3: add_one[T](x) with T param") r: t.CInt = add_one[t.CInt](41) testcheck.check(r == 42, "add_one[t.CInt](41) = 42", "expect 42") # ============================================================ # Test 4: 泛型函数手动传类型参数 - 混合自动推导和手动传 # ============================================================ def test_mixed_inference_explicit(): testcheck.section("Test 4: mixed inference and explicit") # 自动推导 r1: t.CInt = add_one(99) # 手动传 r2: t.CInt = add_one[t.CInt](99) testcheck.check(r1 == 100 and r2 == 100, "add_one(99)=100 add_one[t.CInt](99)=100", "expect 100 100") def main() -> t.CInt: testcheck.begin("GenericTest3: 手动传类型参数 xxx[T](x)") test_explicit_type_arg() test_identity_explicit() test_add_one_explicit() test_mixed_inference_explicit() return testcheck.end()