这可能是一个非常基本的问题,但我已经四处寻找,似乎无法找到答案.
我想使用未装箱的矢量来表示2D列表.使用法线向量很容易做到这一点:
> import qualified Data.Vector as V
> V.fromList [V.fromList [1..5]]
[[1,2,3,4,5]]
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用未装箱的矢量:
> import qualified Data.Vector.Unboxed as U
> U.fromList [U.fromList [1..5]]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
• Non type-variable argument
in the constraint: U.Unbox (U.Vector a)
(Use FlexibleContexts to permit this)
• When checking the inferred type
it :: forall a.
(U.Unbox (U.Vector a), U.Unbox a, Num a, Enum a) =>
U.Vector (U.Vector a)
Run Code Online (Sandbox Code Playgroud)
我怀疑它与此有关:
> V.fromList [1..5]
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
而
> U.fromList [1..5]
[1.0,2.0,3.0,4.0,5.0]
Run Code Online (Sandbox Code Playgroud)
但我似乎无法理解如何避免这种情况.
提前致谢!
我的父小部件拥有一个isLiked bool字段。
当子部件最初构建时,它们会播放动画。请注意以下代码片段:
@override
void initState() {
...
_animationController.forward();
}
Run Code Online (Sandbox Code Playgroud)
我正在使用InheritedWidget. 我尝试添加_animationController.reset()到initState(),但这也不起作用。
我认为当父状态更新时,这个子组件不会被重建。我正在使用以下(可重用)代码将状态传递到小部件树中,如这篇颤振反应状态文章中所述。
import 'package:flutter/widgets.dart';
class Provider extends StatefulWidget {
const Provider({this.data, this.child});
static of(BuildContext context) {
_InheritedProvider p =
context.inheritFromWidgetOfExactType(_InheritedProvider);
return p.data;
}
final data;
final child;
@override
State<StatefulWidget> createState() => new _ProviderState();
}
class _ProviderState extends State<Provider> {
@override
initState() {
super.initState();
widget.data.addListener(didValueChange);
}
didValueChange() => setState(() {});
@override
Widget build(BuildContext context) {
return new _InheritedProvider(
data: widget.data,
child: …Run Code Online (Sandbox Code Playgroud) 我想制作一个粘贴在页面底部的小部件,然后将其固定在键盘的顶部(当它出现时).
请注意输入文本字段如何固定到下图中的键盘:
我该怎么做?我试过把它放进去bottomNavigationBar,但这(显然)不起作用.有没有内置的方法来做到这一点?
我正在使用 Typescript、React 和 Redux(如果相关)。我的项目结构:
/project
/src
/actions
index.ts
actions.ts
Run Code Online (Sandbox Code Playgroud)
索引.ts
import {
Action,
} from "./actions";
export { Action }
Run Code Online (Sandbox Code Playgroud)
我重新导出Actions,index.ts以便其他文件(不在/actions目录下)可以Actions使用import { Action } from "./actions"
动作.ts
// These are the general structures create each
// async action
type Request<T> = { request: T }
type Response<T> = { response: T }
type Err = { error: string }
// Alias common types for requests & responses
type EmptyRequest = Request<null> …Run Code Online (Sandbox Code Playgroud) 我对 Erlang 很陌生(阅读“并发世界的软件”)。从我所读到的,我们将两个过程链接在一起以形成一个可靠的系统。
但是如果我们需要两个以上的进程,我认为我们应该将它们连接成一个环。尽管这与我的实际问题略有不同,但如果这不正确,请告诉我。
给出一个列表PIDs:
[1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)
我想在{My_Pid, Linked_Pid}元组环中形成这些:
[{1,2},{2,3},{3,4},{4,5},{5,1}]
Run Code Online (Sandbox Code Playgroud)
我无法创建一个优雅的解决方案来添加最终{5,1}元组。
这是我的尝试:
% linkedPairs takes [1,2,3] and returns [{1,2},{2,3}]
linkedPairs([]) -> [];
linkedPairs([_]) -> [];
linkedPairs([X1,X2|Xs]) -> [{X1, X2} | linkedPairs([X2|Xs])].
% joinLinks takes [{1,2},{2,3}] and returns [{1,2},{2,3},{3,1}]
joinLinks([{A, _}|_]=P) ->
{X, Y} = lists:last(P)
P ++ [{Y, A}].
% makeRing takes [1,2,3] and returns [{1,2},{2,3},{3,1}]
makeRing(PIDs) -> joinLinks(linkedPairs(PIDs)).
Run Code Online (Sandbox Code Playgroud)
我在查看我的joinLinks函数时感到畏缩-list:last很慢(我认为),而且它看起来不太“实用”。
有没有更好,更惯用的解决方案?
如果其他函数式程序员(非 Erlang)偶然发现了这一点,请发布您的解决方案 - 概念是相同的。
我正在尝试创建一个依赖于 AWS 移动 SDK(Java 语言)的插件。它说要放
implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.6.+@aar') { transitive = true }
Run Code Online (Sandbox Code Playgroud)
在 - 的里面app/build.grade。然而,当我根据文档开发该插件时,插件的 android 根目录中没有app/文件夹(示例项目中有一个,但我不认为那是我应该放置它的地方)。
具体来说,我使用以下命令创建插件:
flutter create --template=plugin hello
Run Code Online (Sandbox Code Playgroud)
我应该把这个放在哪里?我应该下载 .jar 本身并将其放入项目中吗?
干杯。
我有一个Request类型:
data Request =
Request {
reqType :: RequestType,
path :: String,
options :: [(String, String)]
} deriving Show
Run Code Online (Sandbox Code Playgroud)
我正在解析它(来自原始HTTP请求),如下所示:
parseRawRequest :: String -> Request
parseRawRequest rawReq =
Request {
reqType = parseRawRequestType rawReq,
path = parseRawRequestPath rawReq,
options = parseRawRequestOps rawReq
}
Run Code Online (Sandbox Code Playgroud)
现在,在两个电话parseRawRequestType,parseRawRequestPath(等)可能会失败.为了使我的代码更具弹性,我改变了他们的类型签名:
parseRawRequestType :: String -> RequestType
Run Code Online (Sandbox Code Playgroud)
至
parseRawRequestType :: String -> Maybe RequestType
Run Code Online (Sandbox Code Playgroud)
但是parseRawRequest变成一个最好的方法是Maybe Request什么?我必须手动检查每个部件(reqType,path,options)的Nothing,或者是有我就是缺少一个不同的方式?
必须有办法以某种方式组成对象创建和Nothing …