我想动态地将项添加到数组中.但是由于不可变的特性,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) 我找到了显示/隐藏问题(Cmd+ Shift+ M)或输出(Cmd+ Shift+ U)的快捷方式,但如果它们当前不在相应的选项卡上,则需要按两次按钮来隐藏底部窗格.
无论哪个标签当前处于活动状态,如何通过按下单个按钮隐藏和显示底部面板?与Cmd+ 相似的功能B,无论Explorer,Debug等是否处于活动状态,它都会隐藏左侧栏.
我有一个页面,用户可以动态添加文件上传框.添加框会改变它们所处的div的高度,但是它下面的div的某些元素保持在同一个位置,因此它们开始与新的DOM元素重叠.
这在IE8,Firefox,Chrome中正常工作.如何强制IE7使用新的DHTML重排页面?
我制定的最佳解决方案是:
window.resizeBy(1, 0);
setTimeout(UndoResize, 0);
Run Code Online (Sandbox Code Playgroud)
但它不适用于最大化窗口(它恢复窗口).
我让它在我的生产服务器上工作,但是在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。
如果我知道在哪里处理消息队列,则可以进一步调试。
我想async从不需要它的函数中删除任何修饰符。具体来说,那些既不返回承诺也不进行任何await调用的内容不应被标记async。
我知道并不是每个人都想要这个,例如遗留代码库可能有很多这样的代码,而调用者不值得改变。然而,对于新的代码库,我想删除async不必要的地方,因为这使得函数使用起来更干净,并且更容易测试和推理(这表明该函数不依赖于任何异步行为 - 尽管它可能仍然具有异步行为)副作用)。
其中一些很容易被忽略,特别是在await函数中唯一的调用async被分解出来的情况下,但开发人员没有意识到该函数不再需要异步。
有没有办法用 ESLint 或其他方式检查这一点?我在网络搜索中找不到结果。
我有一个非常简单的示例,其中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”。
我最近在查看Apollo 客户端示例时才遇到这种做法- 我没有意识到所有导入语句都可以位于 .js 文件的底部。这似乎是一个好主意,因为很少有在打开文件时我主要要处理的导入语句。
在顺序无关紧要的情况下,我们应该注意这种做法有什么缺点吗?
这可能只是一个示例实践,因为同一家公司将导入放在生产代码的顶部- 但我不确定为什么它不能应用于生产代码。我们正在使用 TypeScript,但我相信这些问题与普通 ES6 是一样的。
我遇到了一个问题,每次我在 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)
看起来每个新的“popover”样式 …
我想使用 TDD 编写一些新的测试,以稍微不同的方式创建数据,并验证测试数据是否已清理为与之前的测试相同的数据。
因此,在编写测试 1 并生成快照后,测试 2/3/4 应该生成与测试 1相同的快照。
我怎样才能做到这一点?Jest 似乎将测试名称添加到自定义快照名称前面,因此我无法使用.match(test1name).
(为每个测试使用全新的相同快照会使快照文件膨胀,并且看起来远非理想。)
每次尝试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在路径中包含“公司名称”,这与我的项目不匹配。
我怎样才能解决这个问题?
typescript ×3
javascript ×2
react-native ×2
dhtml ×1
ecmascript-6 ×1
eslint ×1
expo ×1
import ×1
jestjs ×1
module ×1
promise ×1
reflow ×1
scala ×1
snapshot ×1
tdd ×1