小编Luk*_*ams的帖子

在Scala中创建动态增长数组的最佳方法是什么?

我想动态地将项添加到数组中.但是由于不可变的特性,Scala数组和列表似乎没有提供任何动态添加项的方法.

所以我决定使用List数据类型来使用这个::方法来实现这一点.我的代码看起来像这样

var outList = List(Nil)
val strArray = Array("ram","sam","bam")

for (str<-strArray)
     outList = str :: outList
Run Code Online (Sandbox Code Playgroud)

虽然它以某种方式工作,但问题是新的字符串被预先附加到列表中.但理想的要求是数据的顺序.是的,我知道你在想什么,你可以反转最终结果列表以获得原始订单.但问题是它是一个巨大的阵列.我相信它不是一个解决方案,虽然它解决了这个问题.我相信应该有一个简单的方法来解决这个问题......

我破解Scala的原因是学习编码的功能方式.拥有var(可变类型)并在运行中填充列表在我看来并不是解决问题的一种功能性方法.

我该怎么做?

理想情况下,我希望在Scala中实现类似的功能(在C#代码下面)

List<int> ls = new List<int>();    
for (int i = 0; i < 100; i++)
    ls.Add(i);
Run Code Online (Sandbox Code Playgroud)

scala

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

VS代码:如何隐藏底部面板,无论我在哪个标签上?

我找到了显示/隐藏问题(Cmd+ Shift+ M)或输出(Cmd+ Shift+ U)的快捷方式,但如果它们当前不在相应的选项卡上,则需要按两次按钮来隐藏底部窗格.

无论哪个标签当前处于活动状态,如何通过按下单个按钮隐藏和显示底部面板?与Cmd+ 相似的功能B,无论Explorer,Debug等是否处于活动状态,它都会隐藏左侧栏.

visual-studio-code

27
推荐指数
3
解决办法
4475
查看次数

在IE7中更改DHTML后如何强制重排?

我有一个页面,用户可以动态添加文件上传框.添加框会改变它们所处的div的高度,但是它下面的div的某些元素保持在同一个位置,因此它们开始与新的DOM元素重叠.

这在IE8,Firefox,Chrome中正常工作.如何强制IE7使用新的DHTML重排页面?

我制定的最佳解决方案是:

window.resizeBy(1, 0); 
setTimeout(UndoResize, 0);
Run Code Online (Sandbox Code Playgroud)

但它不适用于最大化窗口(它恢复窗口).

javascript dhtml reflow internet-explorer-7

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

为什么Stripe paymentRequest.canMakePayment()在Localhost上失败?

我让它在我的生产服务器上工作,但是在localhost canMakePayment()return上null

我已经通过最小的Stripe代码跟踪了这一点,但是遇到了一个函数ko,该函数只是将调用发送CAN_MAKE_PAYMENT到某个消息队列,此后执行将变为异步,并且e.available === false在没有进一步信息的情况下解决请求之前,我无法进行进一步跟踪。

我已验证该API确实可在localhost上的Chrome浏览器中使用(window.PaymentRequest可用)。我也在本地运行https(尽管没有绿色复选标记)。

如何跟踪导致Stripe报告PaymentRequest不可用的原因?如果我没有绿色的SSL支票,Chrome会拒绝PaymentRequest呼叫吗?如果是这样,我将如何测试?Chrome文档只是说如果PaymentRequest可用,那么您可以调用API。

如果我知道在哪里处理消息队列,则可以进一步调试。

stripe-payments

11
推荐指数
2
解决办法
3803
查看次数

ESLint:如何在函数上找到不必要的“异步”标记?

我想async从不需要它的函数中删除任何修饰符。具体来说,那些既不返回承诺也不进行任何await调用的内容不应被标记async

我知道并不是每个人都想要这个,例如遗留代码库可能有很多这样的代码,而调用者不值得改变。然而,对于新的代码库,我想删除async不必要的地方,因为这使得函数使用起来更干净,并且更容易测试和推理(这表明该函数不依赖于任何异步行为 - 尽管它可能仍然具有异步行为)副作用)。

其中一些很容易被忽略,特别是在await函数中唯一的调用async被分解出来的情况下,但开发人员没有意识到该函数不再需要异步。

有没有办法用 ESLint 或其他方式检查这一点?我在网络搜索中找不到结果。

promise typescript eslint typescript-eslint

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

为什么TypeScript在分配之前没有捕获到正在使用const?

我有一个非常简单的示例,其中TypeScript(3.5.1)可以很好地使用代码,但运行时会立即引发错误。

我相信这里的问题是本质上value是在运行之前声明但未初始化的getValue。这是非常不直观的imo,但我知道这是JS的工作方式。

但是,为什么在这样一个简单的示例中TS无法检测到此问题?由于value是const,在我看来TS应该能够准确确定设置的时间并预测此代码将崩溃。

console.log(getValue());

const value = "some string";

function getValue() {
  return value;
}
Run Code Online (Sandbox Code Playgroud)

在没有函数调用的第二个示例中,TS确实发现在赋值之前使用了变量:

console.log(value);
const value = "some string";
Run Code Online (Sandbox Code Playgroud)

TSLint的声明前无用似乎也不适用。

假设TS /棉绒将无法捕捉到这一点,那么在初始示例中是否有最佳实践来避免这种崩溃?例如,“始终在文件顶部声明模块级const”。

typescript

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

将 ES6 import 语句放在代码文件底部有什么缺点吗?

我最近在查看Apollo 客户端示例时才遇到这种做法- 我没有意识到所有导入语句都可以位于 .js 文件的底部。这似乎是一个好主意,因为很少有在打开文件时我主要要处理的导入语句。

在顺序无关紧要的情况下,我们应该注意这种做法有什么缺点吗?

这可能只是一个示例实践,因为同一家公司将导入放在生产代码的顶部- 但我不确定为什么它不能应用于生产代码。我们正在使用 TypeScript,但我相信这些问题与普通 ES6 是一样的。

javascript import module typescript ecmascript-6

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

关闭模式或操作表后,React Native 应用程序神秘地冻结

我遇到了一个问题,每次我在 React Native 应用程序中关闭模式、操作表或警报时,该应用程序都会完全冻结并且无法与之交互。

导航到新堆栈或单击按钮不会重现。

我必须杀死应用程序并重新启动才能再次交互。通过打包程序重新加载应用程序无济于事。

我们有代码,当一个人被解雇时会自动显示一个新的模态并且实际上有效 - 模态是可交互的。所以似乎只有底层内容被冻结,好像顶部仍然有一个模态但它是不可见的。

疯狂的是,这是在以前已知的好分支中复制的。因此,本地配置/缓存肯定发生了一些变化,但我不知道是什么。我重新克隆了 repo,清除了 watchman/packager/yarn 缓存,擦除了所有数据的模拟器。没有什么可以解决问题。

打包器、xcode 或 Flipper 中也没有日志指示可能出现什么问题。

使用react-native-modal,@expo/react-native-action-sheet和 内置的 React Native Alert(虽然不使用通用的 Expo 框架)。我已将这些库升级到最新版本。

没有想法了。我还能在哪里看?


更新:超最小代码重现。此模态自动显示、自动关闭,然后按钮不可按下。从代码中删除模态使按钮可按下。

function TestApp() {
  const [isVisible, setVisible] = useState(true);
  return (
    <>
      <TouchableOpacity style={{ padding: 80 }} delayPressIn={0}>
        <Text>Touch</Text>
      </TouchableOpacity>
      <Modal isVisible={isVisible} onShow={() => setVisible(false)}>
        <Text>Foo</Text>
      </Modal>
    </>
  );
}
Run Code Online (Sandbox Code Playgroud)

如果我添加最小警报调用而不是模态,也会发生同样的情况。在这种情况下,我会在 5 秒后显示另一个可交互的警报。 只有弹出框是可交互的——例如警报和模式。

  useEffect(() => Alert.alert("alert"), []);
  useEffect(() => {
    setTimeout(() => Alert.alert("5s alert"), 5000);
  }, []);
Run Code Online (Sandbox Code Playgroud)

更新 #2

看起来每个新的“popover”样式 …

react-native expo react-native-modal

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

如何在 Jest 测试之间共享快照?

我想使用 TDD 编写一些新的测试,以稍微不同的方式创建数据,并验证测试数据是否已清理为与之前的测试相同的数据。

因此,在编写测试 1 并生成快照后,测试 2/3/4 应该生成与测试 1相同的快照。

我怎样才能做到这一点?Jest 似乎将测试名称添加到自定义快照名称前面,因此我无法使用.match(test1name).

(为每个测试使用全新的相同快照会使快照文件膨胀,并且看起来远非理想。)

tdd snapshot jestjs

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

react-native链接找不到我的MainApplication.java文件

每次尝试react-native link使用新库时,都会收到相同的错误消息。这是用于react-native-video的。

rnpm-install info Linking react-native-video android dependency rnpm-install ERR! Something went wrong while linking. Error: ENOENT: no such file or directory, open '/Users/Me/Projects/myProject/android/app/src/main/java/com/companyName/appName/MainApplication.java' Please file an issue here: https://github.com/facebook/react-native/issues

我的MainApplication.java文件的实际位置是

./android/app/src/main/java/com/appName/MainApplication.java
Run Code Online (Sandbox Code Playgroud)

区别在于React Native Link在路径中包含“公司名称”,这与我的项目不匹配。

我怎样才能解决这个问题?

react-native

6
推荐指数
2
解决办法
5041
查看次数