История изменений
Исправление deterok, (текущая версия) :
Т.е. такое вобще возможно?
public abstract class Widget {
private Theme _theme { get; set; }
private int _fontSize { get; set; }
public int GetFontSize() {
return (_fontSize < 0) ? _theme.GetStandardFontSize() : _fontSize;
}
}
В Rust для этого нужно использовать типажи (traits). Однако, типаж ничего не знает о внутренней реализации. Типаж может определить абстрактную функцию, но у него нет доступа к внутренним полям.
trait Widget {
fn font_size(&self) -> i32 {
if self.font_size < 0 { //compiler error
return self.theme.get_standard_font_size(); //compiler error
} else {
return self.font_size; //compiler error
}
}
}
цитата того перевода (https://habrahabr.ru/post/309968/)
Я походу отстал чет от жизни...
Исходная версия deterok, :
Т.е. такое вобще возможно?
public abstract class Widget {
private Theme _theme { get; set; }
private int _fontSize { get; set; }
public int GetFontSize() {
return (_fontSize < 0) ? _theme.GetStandardFontSize() : _fontSize;
}
}
В Rust для этого нужно использовать типажи (traits). Однако, типаж ничего не знает о внутренней реализации. Типаж может определить абстрактную функцию, но у него нет доступа к внутренним полям.
trait Widget {
fn font_size(&self) -> i32 {
if self.font_size < 0 { //compiler error
return self.theme.get_standard_font_size(); //compiler error
} else {
return self.font_size; //compiler error
}
}
}
цитата того перевода (https://habrahabr.ru/post/309968/)