Open
Description
It would be nice to support something like this:
>>> def fib(n):
... if n == 0 or n == 1:
... return 1;
... return fib(n - 1) + fib(n - 2)
...
>>> import scyjava
>>> jfib = scyjava.convert.to_java(fib)
>>> print(type(jfib))
<class 'scyjava.convert._convert.FunctionFromPython'>
>>>
Where FunctionFromPython
is:
from jnius import PythonJavaClass, java_method
class FunctionFromPython(PythonJavaClass):
__javainterfaces__ = ['java/util/function/Function']
def __init__(self, function):
self.function = function
@java_method('(Ljava/lang/Object;)Ljava/lang/Object;')
def apply(self, t):
return self.function(t)
Then anything operating on a Java Function
can accept a Python function
with appropriate conversion. For example:
jlist = ij.py.to_java([5, 4, 3, 2, 1])
fibList = jlist.stream().map(jfib).toArray()
print(f'{type(fibList)}')
print(fibList)
Prints:
<class 'list'>
[8, 5, 3, 2, 1]
😎
Metadata
Metadata
Assignees
Labels
No labels