Generics. Универсальные функции

Последнее обновление: 04.05.2024

C++

C#

Dart

Kotlin

Rust

C++

#include <iostream> 
 
// функция логгирования
template<typename T> void log(const T&); 
 
int main()
{
    std::string name {"Tom"};
    log(name);
    unsigned age{38};
    log(age);
}
 
template <typename T> void log(const T& obj)
{
    std::cout << "obj = " << obj << std::endl;
}

Автотипизация (начиная с C++20):

#include <iostream>
 
// функция логгирования
void log(const auto&); 
 
int main()
{
    std::string name {"Tom"};
    log(name);
    unsigned age{38};
    log(age);
}
 
void log(const auto& obj)
{
    std::cout << "obj = " << obj << std::endl;
}

C#

string name = "Tom";
Log(name);

int age = 38;
Log(age);

void Log<T>(T obj){
     
    Console.WriteLine($"obj = {obj}");
}

Dart

void main (){
     
    String name = "Tom";
    log(name);

    int age = 38;
    log(age);
}
void log<T>(T obj){
     
    print("obj = $obj");
}

Kotlin

fun main() {

    val name = "Tom"
    log(name)

    val age = 38
    log(age)
}
fun <T> log(obj: T){
    println("obj = $obj")
}

Rust

fn log<T: std::fmt::Display>(obj: T){
    println!("obj = {}", obj);
}
fn main(){
    let name = "Tom";
    log(name);

    let age = 38;
    log(age);
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850