小编haz*_*haz的帖子

如何嵌套未装箱的载体?

这可能是一个非常基本的问题,但我已经四处寻找,似乎无法找到答案.

我想使用未装箱的矢量来表示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)

但我似乎无法理解如何避免这种情况.

提前致谢!

arrays haskell vector

4
推荐指数
1
解决办法
101
查看次数

如何在父状态更改后重建子项(并重播动画)

我的父小部件拥有一个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)

animation state flutter

3
推荐指数
1
解决办法
2171
查看次数

如何使小部件粘在键盘顶部

我想制作一个粘贴在页面底部的小部件,然后将其固定在键盘的顶部(当它出现时).

请注意输入文本字段如何固定到下图中的键盘:

TextField粘贴到键盘的聊天应用程序

我该怎么做?我试过把它放进去bottomNavigationBar,但这(显然)不起作用.有没有内置的方法来做到这一点?

keyboard flutter

3
推荐指数
4
解决办法
3382
查看次数

导入“未导出”类型时出现打字稿错误,即使它已导出

我正在使用 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)

我重新导出Actionsindex.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)

import module export typescript redux

3
推荐指数
2
解决办法
3586
查看次数

二郎:做个戒指

我对 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)偶然发现了这一点,请发布您的解决方案 - 概念是相同的。

erlang functional-programming

2
推荐指数
1
解决办法
439
查看次数

创建依赖于本机库的 flutter 插件

我正在尝试创建一个依赖于 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 本身并将其放入项目中吗?

干杯。

android native package flutter

1
推荐指数
1
解决办法
2142
查看次数

创建Maybe类型作为Maybe部分的结果的最佳方法

我有一个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 …

monads haskell maybe

1
推荐指数
1
解决办法
86
查看次数