正如在J语言社区中广泛讨论的那样,J代码有时(例如隐性代码)可能非常难以阅读和维护.
与其术语"动词","名词","词典"等相反,与Ruby,Smalltalk(Objective-C)类型的语言相比,其代码根本不像英语.
相反,J更像是一种符号(或简写,类型 - 类型 - 捕捉 - 思想).它与数学公式/符号(这是捕捉思想的更好的符号)不同,因为它本质上是1-D,而不是2-D.作为一种计算机语言,它承载着数据类型,可执行文件等.
所以我的问题是,是否可以区分J符号是"好的部分"还是"坏部分".
"好的部分"是:清晰,富有表现力
"坏的部分"是:令人困惑,容易出错
例如:"动词训练"超过3个动词,这是一个好主意吗?JOD等代码数据库会有帮助吗?
用于访问 GPIO 的 Rust STM32xxx_hal 代码片段
let gpioa = dp.GPIOA.split(&mut rcc);
let mut p12 = gpioa.pa12;
loop {
p12.into_push_pull_output().set_low().unwrap();
//after some processing, time to switch p12 to input
p12.into_floating_input();
}
Run Code Online (Sandbox Code Playgroud)
编译器抱怨into_push_pull_output()p12 已“移动”。
目标是能够将一个 GPIO 引脚从输出动态切换为输入。
如何在 Rust 中实现这一点?
[编辑]在遵循Mark的(见下文)答案后,这里是STM32G0代码,用于Charlieplexing具有STM32G031J SO-8的3个GPIO引脚的6个LED
#![deny(warnings)]
#![deny(unsafe_code)]
#![no_main]
#![no_std]
// #[allow(unused)]
// use panic_halt;
#[allow(unused)]
use panic_semihosting;
use cortex_m_rt::entry;
use stm32g0xx_hal as hal;
use hal::prelude::*;
use hal::rcc::Config;
use hal::stm32;
#[entry]
fn main() -> ! {
let dp = stm32::Peripherals::take().expect("cannot take peripherals");
let mut …Run Code Online (Sandbox Code Playgroud) 我试图这样做20 + 10:
(10&+~) 20
Run Code Online (Sandbox Code Playgroud)
然后我意识到副词&有"短右手".所以它应该是
(10&(+~)) 20
Run Code Online (Sandbox Code Playgroud)
这给了我正确答案:30.但出于好奇心
(10&+~) 20
Run Code Online (Sandbox Code Playgroud)
给出220.为什么?
更奇怪的是,
(10&+~) 0.1
Run Code Online (Sandbox Code Playgroud)
给出"域错误"
我试图根据浏览器窗口内的一些传感器读数以不同的速率播放"嘟嘟"声.
当传感器读数很高时,想法是"发出嘟嘟声,嘟嘟声,嘟嘟声,......嘟嘟声",当传感器读数很低时,它会发出"嘟嘟声,......嘟嘟"声,这些都是实时的.
传感器读数通过socket.io传送到浏览器.我已经可以控制进度条上下移动了.音频反馈是一项额外功能.
经过一些谷歌搜索,我正在考虑使用网络音频api,创建一个正弦波振荡器,并通过增益节点连接/断开打开/关闭它.
我的问题是如何以正确的方式控制时序,比如说我试图在1 Hz到20 Hz的频率范围内发出蜂鸣声,并且能够动态地改变频率.