问题描述
我创建了此Java sample code的Clojure实现,该实现绘制了PNG图像。我的Clojure版本如下。它可以工作,但是如果我不要强制 #Searches in google for "How to Cook"
driver.get('https://www.google.com/')
time.sleep(2)
driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input') \
.send_keys("How to Cook")
time.sleep(3)
driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input') \
.send_keys(Keys.ENTER)
# driver.find_element_by_xpath('//*[@id="search"]')
#Clicks on Random Link (the part I need help with)
results = driver.find_elements_by_xpath("//div[@class='g']//div[@class='rc']//a[not(@class)]")
for result in results:
resultsList = result.get_attribute("href")
print(resultsList)
的整数参数,Clojure编译器将引发错误。 api文档显示Graphics2D.drawString()
接受浮点参数,但其超类Graphics.drawString()
不接受。我该如何说服/欺骗/提示Clojure使用drawString()
的浮动版本?
drawString()
解决方法
运行时(不是编译器)必须决定要使用.drawString
的哪些重载。愿意自动执行的一组转换可以在Reflector.java中找到。请注意,对于声明为float
(如您希望调用)的方法参数,它仅接受float
,Float
和double
。但是将两个整数相除的结果是一个有理数。因此,float
方法不适用。 int
方法也没有,因为同样没有从有理数自动转换为int
。
在更简单的情况下,您会看到同样的事情:(Float/valueOf (/ 1 2))
。
由于没有自动转换,因此必须显式转换。您已成功使用int
完成了此操作,但是显然您不想调用int
方法。解决方案很简单:改用float
。
将您的drawstring
调用更改为
(.drawString message
(float (/ (- width str-width) 2))
(float (+ (/ height 2) (/ str-height 4)))))