Comments 4
UFO just landed and posted this here
К этому способу можно добавить возвращаемое значение, выглядеть всё будет так же:
+1
Но ведь для такого уже есть плюсы, зачем ещё одни? Никогда не понимал, кстати, необходимости такой перегрузки (кроме конструкторов, пожалуй). Это очень академический подход, порождающий порой неявные ошибки.
0
Кстати, задумался сегодня об этом и вспомнил эту статью. Тут, разумеется, рабочее решение, хотя и написано громоздко. Но тут скорее речь идёт не о перегрузке, а о решении через джинерики-шаблоны. Нюанс этого решения в том, что в функцию всегда передаётся фиксированное число аргументов.
Раст очень многое впитал от функциональных языков, и это можно решить через алгебраические типы-перечисления, ведь с ними в функцию можно передать какие удобно аргументы. Как-то так, например:
Раст очень многое впитал от функциональных языков, и это можно решить через алгебраические типы-перечисления, ведь с ними в функцию можно передать какие удобно аргументы. Как-то так, например:
enum Color {
Grin {r: u8, s: String},
Red (f32)
}
fn func(e: Color) {
match e {
Color::Grin { r, s } => {
println!("Grin: {}, {}", r, s)
},
Color::Red (t) => {
println!("Red: {}", t)
}
};
}
fn main() {
func(Color::Grin {r: 9, s: String::from("not bad") });
func(Color::Red (4.5));
}
0
Sign up to leave a comment.
Rust: пробуем перегрузку функций