Простой вопрос: Где sin()
? Я искал и нашел только в документах Rust, что есть такие черты, как std::num::Float
, что требует sin, но нет реализация.Где функция синуса?
7
A
ответ
11
Float
черты был удален, и методы, присущие реализации на типы в настоящее время. Это означает, что есть немного меньше набирать для доступа математических функций:
fn main() {
let val: f32 = 3.14159;
println!("{}", val.sin());
}
Однако это неоднозначное, если 3.14159.sin()
относится к 32- или 64-битное числу, поэтому вам нужно указать его явно. Выше я установить тип переменных, но вы также можете использовать тип суффикс:
fn main() {
println!("{}", 3.14159f64.sin());
}
Вы также можете использовать сомнительный синтаксис вызова функции:
fn main() {
println!("{}", f32::sin(3.14159));
}
1
Float
is Trait, включить реализацию, импортировать это, чтобы подать заявку на f32 или f64.
use std::num::Float;
fn main() {
println!("{}", 1.0f64.sin());
}
Это интересно (и немного запутанный, когда приходите из фона C++/java), что вы не используете/импортируете «математику», а «плавать». – Kapichu
Не работает. В первом примере я получаю 'error: type _ не реализует никакого метода в области с именем sin', во втором примере я получаю' error: unresolved name Float :: sin'. $ rustc --version выходы 'rustc 0.13.0-nightly (96a3c7c6a 2014-12-23 22:21:10 +0000)' – Kapichu
Вы хотите перейти на новейшую версию Rust. В рамках подготовки к выпуску 1.0 есть много работы! В этом конкретном случае литералы с плавающей запятой теперь по умолчанию имеют тип 'f64' ([релевантный RFC] (https://github.com/rust-lang/rfcs/blob/master/text/0212-restore-int-fallback. д)). Если вы хотите заставить его работать без обновления, попробуйте '3.14f64.sin()'. – Shepmaster