交互但不在命令行REPL中的F#错误

时间:2017-08-05 16:53:30

标签: .net visual-studio f# f#-interactive

在Visual Studio F#Interactive窗口中运行时出错,但在命令行F#REPL或Rider中没有。

error FS0193: internal error: Index not found. (Exception from HRESULT: 0x80131124)
var th = ['', 'ألف', 'مليون', 'مليار', 'تريليون'];
var dg = ['صفر', 'واحد', 'اثنين', 'ثلاثة', 'أربعة', 'خمسة', 'ستة', 'سبعة', 'ثمانية', 'تسعة'];
var tn = ['عشرة', 'أحد عشر', 'اثني عشر', 'ثلاثة عشر', 'أربعة عشر', 'خمسة عشر', 'ستة عشر', 'سبعة عشر', 'ثمانية عشر', 'تسعة عشر'];
var tw = ['عشرون', 'ثلاثون', 'الأربعين', 'خمسين', 'ستين', 'السبعين', 'ثمانين', 'تسعين'];

//console.log(th);
function toWords(s) {
	s = s.toString();
	s = s.replace(/[\, ]/g,'');
	if (s != parseFloat(s)) return 'ليس رقم';
	var x = s.indexOf('.');
	if (x == -1)
		x = s.length;
	if (x > 15)
		return 'too big';
	var n = s.split(''); 
	var str = '';
	var sk = 0;
	for (var i=0;   i < x;  i++) {
		if ((x-i)%3==2) { 
			if (n[i] == '1') {
				str += tn[Number(n[i+1])] + ' '+ ' ';
				i++;
				sk=1;
			} else if (n[i]!=0) {
				str += tw[n[i]-2] + ' ';
				sk=1;
			}
		} else if (n[i]!=0) { // 0235
			str = dg[n[i]] + ' ' + str + ' ';
			if ((x-i)%3==0) str += 'مائة و ';
			sk=1;
		}
		if ((x-i)%3==1) {
			if (sk)
				str += th[(x-i-1)/3] + ' ';
			sk=0;
		}
	}

	if (x != s.length) {
		var y = s.length;
		str += 'point ';
		for (var i=x+1; i<y; i++)
			str += dg[n[i]] +' ';
	}
	return str.replace(/\s+/g,' ');
}

console.log("23 : "+ toWords(23));
console.log("120: "+ toWords(120));
  • 未找到的索引是什么
  • 为什么它只能在命令行REPL中工作?

1 个答案:

答案 0 :(得分:0)

答案是,Visual Studio已经扭曲了它的内裤。

右键单击并重置F#窗口解决了问题。仍然不知道是什么造成的。