我在F#中有A
,B
和C
3种类型。我无法修改其中的两种类型A
和B
。类型C
是我控制的类型。
我要编写重载运算符,例如-
type C () =
static member (><) (alpha : A) (beta : B) : C = zeta alpha beta
static member (><) (beta : B) (alpha : A) : C = omega alpha beta
当我尝试调用运算符时,编译会发出以下错误-
Error FS0043 None of the types 'A, B' support the operator '><'
如何解决该问题,以便可以使用不受其类型定义控制的操作数来定义重载运算符?我只能控制其定义的类型是结果类型C
!
答案 0 :(得分:4)
由于import os
import datetime
import re
# get xls files
xls_files = [file for file in os.listdir(os.getcwd()) if file.endswith('.xls')]
# get current date
now = datetime.datetime.now()
# change names
for item in xls_files:
# split name and date part
name_parts = item.split('.')
get_date = re.findall('\d+-\d+-\d+', name_parts[0])
name_string_part = name_parts[0].replace(get_date[0], '')
# create new name
new_name = name_string_part + str(now.day) + '-' + str(now.month) + '-' + str(now.year) + '_' + '.xls'
# rename file
os.rename(item, new_name)
不会出现在输入参数中,因此至少在不带特征调用的重载解析中不考虑类型扩展的情况下,否则不会起作用。
因此,您必须包括C
并在全局级别定义运算符:
C
注意:如果需要,您可以在内部使用其他运算符名称